摘要:nonatomic:非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。(atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。)assign: 简单赋值,不更改索引计数对基础数据类型 (例如NSInteger)和C数据类型(int, float, double, char, 等) 适用简单数据类型copy:建立一个索引计数为1的.
阅读全文
文章分类 - Objective-C
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且必须包含此版权声明的完整内容。版本 1.1 发表于2010-03-08 四 系统自动创建新的autorelease pool在生成新的Run Loop的时候,系统会自动创建新的autorelease pool(非常感谢网友hhyytt和neogui的提醒)。注意,此处不同于xcode在新建项目时自动生成的代码中加入的autorelease pool,xcode生成的代码可以被删除,但系统自动创建的新.
阅读全文
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com,且必须包含此版权声明的完整内容。版本 1.1 发表于2010-03-08三 @property (retain)和@synthesize的默认实现在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底发生了什么(retain property的默认实现)。property实际上是getter和setter,针对有retain参数的pro.
阅读全文
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com,且必须包含此版权声明的完整内容。版本 1.1 发表于2010-03-08二口诀与范式1 口诀。1.1 谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。 例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用rele
阅读全文
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且必须包含此版权声明的完整内容。版本 1.1 发表于2010-03-08前言初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。此文涉及的内存管理是针对于继承于NSObject的Cla
阅读全文
摘要:方法定义举例:-(void)insertObject:(id)anObject atIndex:(NSInteger)index各部分解释:1.方法修饰符 - 代表此方法是实体方法,必须先生成类实例,通过实例才能调用该方法。 + 代表此方法是类的静态方法,可以直接调用,而不用生成类实例。2.参数类型 id 与 NSInteger 分别是两个参数 anObject 和 index的类型。3.方法签名 本例中,insertObject 和 atIndex组成了该方法的签名关键字。此处举例如下:-(void) setTo: (int) n over: (int) d{ numerator =...
阅读全文
摘要:enum 和 typedef, 在两个小节中书中分别出现了2个例子,如下enum direction {north, south, east, west};typedef enum {north, south, east, west} direction;不禁产生疑问,这两个有什么区别,仔细对照了一下,发现是这样的:大同小异,同: 都是申明了一个枚举类型。异:在使用该枚举类型定义变量的时候,语法不一样,举例如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.
阅读全文
摘要:在C#中,我们用接口来实现多态。比如接口IOb,定义了1个方法F; 有两个类A,B都实现了IOb接口。IOb item = new A();item.F();//执行的是A.F();item = new B();item.F();//执行的B.F(); 在objective-c中,interface 的含义和C#有了很大的不同,不能这样使用。那么如何实现类似的效果呢。那就是特殊类型id,看如下代码段,注释:Fraction 和 Complex都包含print 方法。 #import “Fraction.h”#import “Complex.h”int main (int argc, char.
阅读全文
摘要:C#中可以通过反射分析元数据来解决这个问题,示例代码如下:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849using System;using System.Reflection; namespace Hello{ class Program { static void Main(string[] args) { if (IsMethodDefined(typeof(Utils), "HelloWorld")) { Console.WriteLi
阅读全文
摘要:字符串是程序设计最常用的数据类型之一了。在Mac/iPhone编程中,苹果为我们提供了一个不同的字符串类型NSString。有别与普通的String为数据类型,NSString其实是一个对象类型。NSString是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,好的和好的… ….小常识:NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT.@是Cocoa元素的前缀,很多地方我们会看到,比如接下来…1, 创建一个NSString对象简单方法:NSString *aString = @"我是个
阅读全文
摘要:Objective-C语法之字符串(转)Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。1.创建经典的NSString字符串NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组。@+ " 字符串 " 这个符号为objective-c NSString 字
阅读全文