当前位置:  编程技术>移动开发
本页文章导读:
    ▪收来临自 TexturePacker & PhysicsEditor 的免费 license        收到来自 TexturePacker & PhysicsEditor 的免费 license   今天收到了收到来自 TexturePacker & PhysicsEditor 的免费 license 了。在申请免费 license 后的第二天就收到了,太激动了!     既然人.........
    ▪ CountDownLatch鍜孋yclicBarrier鐨勫尯鍒        CountDownLatch鍜孋yclicBarrier鐨勫尯鍒? CountDownLatch :聽涓€涓嚎绋?/strong>(鎴栬€呭涓?锛?绛夊緟鍙﹀N涓嚎绋?/strong>瀹屾垚鏌愪釜浜嬫儏涔嬪悗鎵嶈兘鎵ц銆?聽 CyclicBarrier 聽 聽 聽 .........
    ▪ 第三方库高效率管理工具CocoaPods       第三方库高效管理工具CocoaPods 转载原文:http://blog.sina.com.cn/s/blog_7c8dc2d50101jy3f.html   介绍: 开发应用的时候第三方的库是不可缺少的,能提高开发的效率。 一些经常用到的库,在新的项目.........

[1]收来临自 TexturePacker & PhysicsEditor 的免费 license
    来源: 互联网  发布时间: 2014-02-18
收到来自 TexturePacker & PhysicsEditor 的免费 license
  今天收到了收到来自 TexturePacker & PhysicsEditor 的免费 license 了。在申请免费 license 后的第二天就收到了,太激动了!  

  既然人家都免费发 license 了,按照人家回复的邮件期望,我们也有义务为人家做些推广。好东西当然要大家共享了!

  开发游戏的人一般都很喜欢对 sprite 进行打包,而且在游戏中很可能还会使用到box2d 形状生成工具,不过免费的都不太好用,但是好的东西又都是要收费的。今天就给大家介绍一个福利,可以得到免费的收费工具。

软件下载地址:
http://www.codeandweb.com/

大家可以根据需要下载 TexturePacker 或 PhysicsEditor。

免费 license 申请地址:
http://www.codeandweb.com/request-free-license

若通过申请,你会收到类似下面的邮件(这是我收到的邮件内容):
引用
Hi Michael,

Here's your license key for TexturePacker

TP-xxxx-xxxx-xxxx-xxxx

The license key for PhysicsEditor is attached as file.

Have fun!

Nice blog! I would be happy to get a (short) blog post in return.

In case you do a tutorial post about my tools I can link back to your blog from the tutorials section on my page. That might give you some more visitors on your page!

Kind regards
Kerstin on behalf of Andreas

    
[2] CountDownLatch鍜孋yclicBarrier鐨勫尯鍒
    来源: 互联网  发布时间: 2014-02-18
CountDownLatch鍜孋yclicBarrier鐨勫尯鍒?

鍦ㄧ綉涓婄湅鍒板緢澶氫汉瀵逛簬CountDownLatch鍜孋yclicBarrier鐨勫尯鍒畝鍗曠悊瑙d负CountDownLatch鏄竴娆℃€х殑锛岃€?CyclicBarrier鍦ㄨ皟鐢╮eset涔嬪悗杩樺彲浠ョ户缁娇鐢ㄣ€傞偅濡傛灉鍙槸杩欎箞绠€鍗曠殑璇濓紝鎴戣寰桟yclicBarrier绠€鍗曞懡鍚嶄负ResetableCountDownLatch濂戒簡锛屾樉鐒朵笉鏄殑銆?br> 鎴戠殑鐞嗚В鏄紝瑕佷粠浠栦滑鐨勮璁$洰鐨勫幓鐪嬭繖涓や釜绫汇€俲avadoc閲岄潰鐨勬弿杩版槸杩欐牱鐨勩€?/p>

CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.

CyclicBarrier : A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.

鍙兘鏄垜鐨勮嫳璇笉澶熷ソ鍚э紝 鎴戞劅瑙変粠杩欎釜javadoc閲岄潰瑕佸噯纭悊瑙d粬浠殑宸紓杩樻槸涓嶅鏄撶殑銆?br> 鎴戠殑鐞嗚В鏄?/p>

CountDownLatch :聽涓€涓嚎绋?/strong>(鎴栬€呭涓?锛?绛夊緟鍙﹀N涓嚎绋?/strong>瀹屾垚鏌愪釜浜嬫儏涔嬪悗鎵嶈兘鎵ц銆?聽 CyclicBarrier 聽 聽 聽 聽:聽N涓嚎绋?/strong>鐩镐簰绛夊緟锛屼换浣曚竴涓嚎绋嬪畬鎴愪箣鍓嶏紝鎵€鏈夌殑绾跨▼閮藉繀椤荤瓑寰呫€?br> 杩欐牱搴旇灏辨竻妤氫竴鐐逛簡锛屽浜嶤ountDownLatch鏉ヨ锛岄噸鐐规槸閭d釜鈥滀竴涓嚎绋嬧€?/strong>, 鏄畠鍦ㄧ瓑寰咃紝 鑰屽彟澶栭偅N鐨勭嚎绋嬪湪鎶?strong>鈥滄煇涓簨鎯呪€?/strong>鍋氬畬涔嬪悗鍙互缁х画绛夊緟锛屽彲浠ョ粓姝€傝€屽浜嶤yclicBarrier鏉ヨ锛岄噸鐐规槸閭?strong>N涓嚎绋?/strong>锛屼粬浠箣闂翠换浣曚竴涓病鏈夊畬鎴愶紝鎵€鏈夌殑绾跨▼閮藉繀椤荤瓑寰呫€?/p>


CountDownLatch 鏄鏁板櫒, 绾跨▼瀹屾垚涓€涓氨璁颁竴涓? 灏卞儚 鎶ユ暟涓€鏍? 鍙笉杩囨槸閫掑噺鐨?

鑰孋yclicBarrier鏇村儚涓€涓按闂? 绾跨▼鎵ц灏辨兂姘存祦, 鍦ㄦ按闂稿閮戒細鍫典綇, 绛夊埌姘存弧(绾跨▼鍒伴綈)浜? 鎵嶅紑濮嬫硠娴?

CyclicBarrier

鍋囪鏈夊彧鏈夌殑涓€涓満鏅細姣忎釜绾跨▼浠h〃涓€涓窇姝ヨ繍鍔ㄥ憳锛屽綋杩愬姩鍛橀兘鍑嗗濂藉悗锛屾墠涓€璧峰嚭鍙戯紝鍙鏈変竴涓汉娌℃湁鍑嗗濂斤紝澶у閮界瓑寰?

    import java.io.IOException;  
    import java.util.Random;  
    import java.util.concurrent.BrokenBarrierException;  
    import java.util.concurrent.CyclicBarrier;  
    import java.util.concurrent.ExecutorService;  
    import java.util.concurrent.Executors;  
      
    class Runner implements Runnable {  
      
        private CyclicBarrier barrier;  
      
        private String name;  
      
        public Runner(CyclicBarrier barrier, String name) {  
            super();  
            this.barrier = barrier;  
            this.name = name;  
        }  
      
        @Override  
        public void run() {  
            try {  
                Thread.sleep(1000 * (new Random()).nextInt(8));  
                System.out.println(name + " 鍑嗗OK.");  
                barrier.await();  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            } catch (BrokenBarrierException e) {  
                e.printStackTrace();  
            }  
            System.out.println(name + " Go!!");  
        }  
    }  
      
    public class Race {  
      
        public static void main(String[] args) throws IOException, InterruptedException {  
            CyclicBarrier barrier = new CyclicBarrier(3);  
      
            ExecutorService executor = Executors.newFixedThreadPool(3);  
            executor.submit(new Thread(new Runner(barrier, "zhangsan")));  
            executor.submit(new Thread(new Runner(barrier, "lisi")));  
            executor.submit(new Thread(new Runner(barrier, "wangwu")));  
      
            executor.shutdown();  
        }  
      
    }  

鎬荤粨锛欳yclicBarrier灏辨槸涓€涓爡鏍忥紝绛夊緟鎵€鏈夌嚎绋嬪埌杈惧悗鍐嶆墽琛岀浉鍏崇殑鎿嶄綔銆俠arrier 鍦ㄩ噴鏀剧瓑寰呯嚎绋嬪悗鍙互閲嶇敤銆?

CountDownLatch

    import java.util.concurrent.CountDownLatch;  
    /** 
     * 绀轰緥锛欳ountDownLatch鐨勪娇鐢ㄤ妇渚?
     * Mail: ken@iamcoding.com 
     * @author janeky 
     */  
    public class TestCountDownLatch {  
        private static final int N = 10;  
      
        public static void main(String[] args) throws InterruptedException {  
            CountDownLatch doneSignal = new CountDownLatch(N);  
            CountDownLatch startSignal = new CountDownLatch(1);//寮€濮嬫墽琛屼俊鍙? 
      
            for (int i = 1; i <= N; i++) {  
                new Thread(new Worker(i, doneSignal, startSignal)).start();//绾跨▼鍚姩浜? 
            }  
            System.out.println("begin------------");  
            startSignal.countDown();//寮€濮嬫墽琛屽暒  
            doneSignal.await();//绛夊緟鎵€鏈夌殑绾跨▼鎵ц瀹屾瘯  
            System.out.println("Ok");  
      
        }  
      
        static class Worker implements Runnable {  
            private final CountDownLatch doneSignal;  
            private final CountDownLatch startSignal;  
            private int beginIndex;  
      
            Worker(int beginIndex, CountDownLatch doneSignal,  
                    CountDownLatch startSignal) {  
                this.startSignal = startSignal;  
                this.beginIndex = beginIndex;  
                this.doneSignal = doneSignal;  
            }  
      
            public void run() {  
                try {  
                    startSignal.await(); //绛夊緟寮€濮嬫墽琛屼俊鍙风殑鍙戝竷  
                    beginIndex = (beginIndex - 1) * 10 + 1;  
                    for (int i = beginIndex; i <= beginIndex + 10; i++) {  
                        System.out.println(i);  
                    }  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                } finally {  
                    doneSignal.countDown();  
                }  
            }  
        }  
    }  


鎬荤粨锛欳ounDownLatch瀵逛簬绠$悊涓€缁勭浉鍏崇嚎绋嬮潪甯告湁鐢ㄣ€備笂杩扮ず渚嬩唬鐮佷腑灏卞舰璞″湴鎻忚堪浜嗕袱绉嶄娇鐢ㄦ儏鍐点€傜涓€绉嶆槸璁$畻鍣ㄤ负1锛屼唬琛ㄤ簡涓ょ鐘舵€侊紝寮€ 鍏炽€傜浜岀鏄鏁板櫒涓篘锛屼唬琛ㄧ瓑寰匩涓搷浣滃畬鎴愩€備粖鍚庢垜浠湪缂栧啓澶氱嚎绋嬬▼搴忔椂锛屽彲浠ヤ娇鐢ㄨ繖涓瀯浠舵潵绠$悊涓€缁勭嫭绔嬬嚎绋嬬殑鎵ц銆?


浣滆€?聽xumingming
缃戝潃:聽http://xumingming.sinaapp.com/215/countdownlatch-vs-cyclicbarrier/


    
[3] 第三方库高效率管理工具CocoaPods
    来源: 互联网  发布时间: 2014-02-18
第三方库高效管理工具CocoaPods
转载原文:http://blog.sina.com.cn/s/blog_7c8dc2d50101jy3f.html

 

介绍:

开发应用的时候第三方的库是不可缺少的,能提高开发的效率。 一些经常用到的库,在新的项目里用是,你又得手工的Add到项目里,用的到库多起来了,就不方便管理了。发现CocoaPods这个软件,可以帮你管理Xcode里的第三方的库,很方便。

那怎么用呢?先安装CocoaPods。

1、CocoaPods是跑在Ruby的软件,安装可能需要几分钟,安装命名:

sudo gem install cocoapods

2、如果想为每个第三方库生成文档,那运行

brew install appledoc  这步是可选的。

安装完成后提示:

如果你的Ruby环境不够新的话,可能要更新一下:

gem update --system

现在pod安装好了,怎么使用呢? 搜索

先试试搜索功能,你需要什么库,可以用pod来搜索,比如要用JSONKit这个库:

pod search是搜索命名,后面写上库名称就行了。

pod search JSONKit

搜索出来:

初始化

好了, 在终端shell中cd 来到你要管理的项目,运行:pod install 

运行完之后你会发现你的项目目录下是这样的:

多了*.xcworkspace  pod等文件。这是pod生成的项目管理文件,打开LibDemo.xcworkspace 项目文件,在Xcode里看到是这样的目录结构:

添加一个库:

 vim Podfile 打开文件,把刚才搜索到的JSONkit添加进去。

platform :ios
pod 'JSONKit'

保存退出。

运行:pod update 

这样是就把JSONKit 库下载并和本地项目关联起来了,这是Xcode提示你更新项目

点Revert。

这时你看项目pod部分,多了JSONKit库.好了,第三方库就这么神奇的加进来。

头文件路径

那试试看使用JONSKit.h,在ViewController.m里引用下。找不到头文件,怎么办?还没设置头文件的目录,在项目的Target的里设置一下:

如下图所示,输入${SRCROOT}  后面选上recursive。

在引用头文件:

完美。

其他的第三方库。

Podfile文件中添加后pod update下就ok。

 

[html] view plaincopy
  • platform :ios,      '5.0'  
  • pod 'JSONKit'  
  • pod 'AFNetworking'  
  • pod 'MBProgressHUD'  
  • pod 'Reachability'  
  • pod 'Nimbus/Core'  

  • 比如我引用了上面这些库,Nimbus太大了,我只需要 Core,也可以这么写。

     

    CocoaPods还有好多高级功能,可以根据需求来使用。

    参考:https://github.com/CocoaPods/CocoaPods/wiki


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3