- 浏览: 545416 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
landerson:
明显就有要求的嘛
ANDROID轻量级JSON序列化和反序列化[转] -
jimode2013:
很不错,就是需要这个方法
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转] -
w11h22j33:
...
[转]NSMutableArray中的自动释放对象让我郁闷了一整天 -
w11h22j33:
UILabel* label = [[UILabel a ...
Iphone开发 -
w11h22j33:
http://mobile.51cto.com/iphone- ...
获得通讯录中联系人的所有属性[转]
http://unmi.cc/objective-c-snippets
1. 初始化一个空的数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:nil];
//或者,这里的 Capacity 像 java 的 ArrayList 中的 Capacity
//NSMutableArray ×array = [NSMutableArray arrayWithCapacity:5];
MSLog(@"%i", [array count]);
如果用到了 alloc 的话,就必须自己处理好相应的 release 操作了,像:
NSMutableArray *array = [[NSMutableArray alloc] init];
NSMutableArray *array1 = [[NSMutableArray alloc] initWithCapacity:5];
NSMutableArray *array2 = [[NSMutableArray alloc]initWithObjects:nil];
其实要初始化某种类型集合的空集合,下面的那些方式应该是更为合适的:
NSArray *array = [NSArray array];
NSMutableArray *array1 = [NSMutableArray array];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSSet *set = [NSSet set];
2. 类的初始化方法:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
NSInteger globalVar = 5;
@interface TestClass : NSObject
- ( void ) foo;
@end @implementation TestClass
//在第一次加载 TestClass 时被自动调用 + ( void ) initialize {
extern NSInteger globalVar;
globalVar += 5;
} - ( void ) foo {
NSLog (@ "globalVar: %i" , globalVar);
} @end //应用上面的代码
TestClass *test = [[TestClass alloc] init];
[test foo]; //输出为 10
TestClass *test1 = [[TestClass alloc] init];
[test1 foo]; //输出也是 10
|
Objective-C 的 + (void) initialize 就相当于 Java 中的 static {} 静态块一样,+ (void) initialize 类初始方法也只会被调用一次。在 Objective-C 和 Java 它们各自反应为:
Objective-C 的 + (void) initialize ------------ _class_initialize
Java 的 static {} ------------ <cinit>, 现在看到的是 static{}
3. 多线程相关的代码
Obj-C 中与多线程相关的类有 NSOperation、NSOperationQueue 和 NSThread。NSOperation 类似与 Java 的 Runnable 接口,只是要实现的 NSOperation 的方法是 -(void) main; 当把 NSOperation 加到 NSOperationQueue 后,队列就会为每个 NSOperation 实例分配一个 NSThread 去启动它。NSOperation 执行完后会被 release 掉。
下面是使用 NSOperation 和 NSOperationQueue 的一段完整代码:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#import <Foundation/Foundation.h> @interface MyOperation : NSOperation {
NSString *name;
} @end @implementation MyOperation
- ( id ) initWithName: ( NSString *) theName {
self = [ super init];
name = theName;
return self ;
} - ( void ) main {
NSLog (@ "Thread %@ Start run: %@" , name, [ NSDate date]);
} @end int main ( int argc, const char * argv[])
{ NSAutoreleasePool * pool = [[ NSAutoreleasePool alloc] init];
NSOperationQueue *queue = [[ NSOperationQueue alloc] init];
NSOperation *operation1 = [[[MyOperation alloc] initWithName:@ "One" ] autorelease];
NSOperation *operation2 = [[[MyOperation alloc] initWithName:@ "Two" ] autorelease];
NSOperation *operation3 = [[[MyOperation alloc] initWithName:@ "Three" ] autorelease];
[queue addOperation:operation1];
[queue addOperation:operation2];
[queue addOperation:operation3];
[queue setMaxConcurrentOperationCount:2]; //可设置同时并发数
sleep(50000);
[pool drain];
return 0;
} |
执行结果输出中顺序是不定的,像:
011-08-09 14:20:54.144 TestObjC[3602:1c03] Thread Two Start run: 2011-08-09 06:20:54 +0000
2011-08-09 14:20:54.144 TestObjC[3602:1e03] Thread One Start run: 2011-08-09 06:20:54 +0000
2011-08-09 14:20:54.146 TestObjC[3602:1e03] Thread Three Start run: 2011-08-09 06:20:54 +0000
NSOperation 还有一个子类是 NSInvocationOperation,它与 NSOperation 的区别是可以指定线程要执行的实例的某个方法,而不只限制是 main 方法。
发表评论
-
iOS App性能优化
2014-01-03 11:23 1727http://www.hrchen.com/2013/05/ ... -
iOS多线程编程Part 3/3 - GCD
2014-01-03 11:21 1676http://www.hrchen.com/2013/07/ ... -
iOS多线程编程Part 2/3 - NSOperation
2014-01-03 11:20 4577http://www.hrchen.com/2013/06/ ... -
iOS多线程编程Part 1/3 - NSThread & Run Loop
2014-01-03 11:17 7150http://www.hrchen.com/2013/06/ ... -
iOS移动网络环境调优那些事[转]
2014-01-02 17:10 2943http://xiangwangfeng.com/201 ... -
生成APNS Service证书的步骤[转]
2013-05-23 09:19 5711要进行推送服务的第一件事就是获取推送证书。它用来对你通过SS ... -
xcode 环境,多工程联编设置【转】
2013-02-28 21:59 9224http://blog.csdn.net/vienna_zj ... -
干掉你程序中的僵尸代码【转】
2012-12-22 11:05 994随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个 ... -
一个文本框搞定信用卡相关信息的输入[转]
2012-12-22 11:03 1168http://beforweb.com/node/134 ... -
【转】深度技术分析“为什么ios比android流畅”
2012-09-23 19:41 1450原文 Andorid更新了一个版本又一个版本,硬 ... -
Iphone开发
2012-09-17 22:46 12301. NSClassFromString 这个方法 ... -
HowTo: Install iPhone SDK 2.0 – 3.1 for XCode 3.2[转]
2012-09-06 09:00 1243原文链接 So… you’ve installe ... -
Xcode 中设置部分文件ARC支持[转]
2012-08-03 10:57 1751ARC是什么 ARC是iOS 5推出的新功 ... -
xcode4 设置调试错误信息小结【转】
2012-07-19 14:37 1831方案1:NSZombieEnabled 先选中工程, ... -
Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial【转】
2012-07-19 14:36 1285Finding iPhone Memory Lea ... -
[Cocoa]XCode的一些调试技巧【转】
2012-07-19 14:35 1227XCode 内置GDB,我们可以在命令行中使用 GDB ... -
[IPhone]如何使用Leak检查内存泄漏[转]
2012-07-19 14:34 1271简介 在IPhone程式开发中,记忆体泄漏(内存泄漏)是 ... -
获得通讯录中联系人的所有属性[转]
2012-06-21 14:04 1642获得通讯录中联系人的所有属性 ,看代码: ABAdd ... -
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转]
2012-06-20 23:51 16455------------------------------- ... -
shouldAutorotateToInterfaceOrientation 不触发或者不执行的问题[转]
2012-06-20 22:58 1478今天遇到一个很郁闷 ...
相关推荐
首先,你需要了解SQLite3的API接口,Objective-C中通常通过C语言接口与SQLite进行交互。在项目中,你需要引入`<sqlite3.h>`头文件来使用SQLite的函数。安装SQLite3库后,可以开始编写代码来打开、创建或检查数据库...
### 实现待办事项列表的Objective-C代码、建议及注意事项 #### 一、Objective-C简介与背景 Objective-C是一种结合了C语言的强大功能与Smalltalk语言面向对象特性的编程语言。自1983年首次发布以来,它一直是苹果...
标题中的"3des.rar_3des_3des objective_3des objective-c_c 3des_objective"暗示了这个压缩包包含的是关于3DES加密算法及其在Objective-C编程语言中的实现的相关资料。3DES,全称为Triple Data Encryption ...
Objective-C是一种强大的面向对象编程语言,特别是在Apple的iOS和macOS开发中占据核心地位。在Objective-C中,消息传递是其动态性的重要体现,而消息转发机制则是这种动态性的一个关键组成部分。本教程将深入探讨...
Objective-C实现广度优先搜索的代码示例展示了面向对象编程在图论问题中的应用。通过类的设计、方法的定义和算法的实现,程序员可以在Objective-C环境中有效地解决图遍历问题。这个过程不但加深了对广度优先搜索算法...
除了Objective-C文件外,源码还包含了一些C语言、MATLAB代码、XIB界面文件以及项目配置文件。C语言在iOS应用开发中多用于底层模块或性能敏感的代码片段,MATLAB代码可能是用于某些特定数据处理和分析的工具,XIB文件...
Objective-C语言具备面向对象的特性,这使得代码模块化和可重用性得以实现。同时,该语言的内存管理机制虽然较为传统,但通过引用计数等方式也能够有效管理内存。该项目的设计源码,对于想要深入了解如何利用...
- **调试技巧**:学习如何有效地调试Objective-C代码,使用工具如Xcode的断点、日志记录等功能。 ### 相关知识点详解 #### 1. 面向对象编程 Objective-C采用了消息传递的方式实现面向对象编程。当一个对象接收到一...
然而,由于历史原因,Objective-C仍然是许多现有代码库和框架的基础,特别是在Apple的生态系统中。为了在Swift项目中无缝地利用这些Objective-C资源,Swift提供了桥接头和互操作性。ObjectiveKit正是这样一个工具,...
Objective-C是一种强大的面向对象编程语言,特别是在苹果的iOS和macOS开发中占据核心地位。商品销售系统的实现,意味着我们将在Objective-C中构建一个能够管理商品库存、处理订单、跟踪销售等核心功能的应用程序。...
在Swift编程语言中,我们有时需要对Objective-C的类或方法进行监控,以便于调试、性能分析或日志记录。`CJMethodLog`是一个工具,它提供了对Objective-C类和方法调用日志的监听功能。这个工具的使用极大地便利了...
4. **C 语言兼容**:与 C 语言高度兼容,几乎所有的 C 语言代码可以在 Objective-C 中使用。 5. **Foundation 框架**:通常与苹果的 Foundation 框架一起使用,提供用于文件处理、网络通信、数据存储等的高级 API。 ...
AOPAspect是为Objective-C设计的一个小型AOP库,它允许开发者在不修改原有代码的情况下,插入额外的行为或逻辑,例如日志记录、性能监控、错误处理等。这个库遵循MIT许可协议,这意味着它是开源的,可以自由使用、...
基于Objective-C的RateView自定义评级星星视图设计源码项目是一个完整的开发包,它涉及到了移动应用开发中用户界面(UI)设计的重要组成部分,即如何实现一个用户友好的评级系统。该项目使用Objective-C语言进行开发,...
Objective-C作为苹果应用开发的主流语言,因其面向对象的特性以及与C语言的兼容性而广受欢迎。MATLAB作为一个强大的数学计算和仿真工具,特别适用于科学计算和算法实现,而C语言则以其高效性和灵活性在系统编程和...
Objective-C是苹果平台上的主要编程语言,它基于C语言并添加了面向对象的特性。在iOS应用开发中,Objective-C常用于构建用户界面、处理数据以及与其他系统服务进行交互。当涉及到敏感数据时,如用户登录信息、隐私...
Objective-C中的存储类别包括`auto`(默认,用于局部变量)、`static`(静态局部变量,保持其值跨方法调用)、`const`(常量)、`extern`(全局变量的引用)和`volatile`(指示变量可能被未记录的事件修改)。...
日记记录的时候就记录三个数据,标题,内容,写日记的时间。这个时间精确到秒,相当于数据库的主键。我们点击以前写的日记项,也可以对其进行修改,这个时间也会修改。 3.界面设置 我先贴两个图片大家理解一下就好...
Objective-C作为一种面向对象的编程语言,广泛应用于MacOS和iOS的软件开发之中,而这个项目正是利用了Objective-C的特性,通过一系列精心编写的源文件和资源文件,实现了对微信撤回消息的拦截和记录,使得用户即使在...
.DS_Store文件记录了文件夹的自定义属性,而.gitignore文件指定了Git版本控制系统中不希望被跟踪的文件或文件夹,确保项目的源代码管理更加高效。GLEnvs.podspec文件则是一个Podspec文件,它用于描述Objective-C项目...