Fork me on GitHub

文章分类 -  objective-c

上一页 1 2 3 下一页

【Object-c基础】Object-c基础之四:预定义,条件编译,数组
摘要:1. 预定义:#define在object-c中,跟C语言一样都是采用#define才使用,但末尾是没有分号的;例子:#define PI 3.14在之后即可引用,这点在iphone开发中一定每个组建的tag非常好用,并且可以集合放一个定义文件中。2. 条件编译:#ifdef,#end,#elseif#ifdef,#else,#endif如我们常识认为的那样,程序会根据判断条件处理或者忽略某一个程序段。例子:#ifdef MAC_OS_X# define DATADIR “/uxnl/data”#else# define DATADIR “\usr\data”#endif3. 数组在objec 阅读全文

posted @ 2012-03-10 14:57 pengyingh 阅读(675) 评论(0) 推荐(0) 编辑

【object-c基础】Object-c基础之三:面对对象开发@interface,@implementation
摘要:1.@interface在java等语言编程中,创建类都是用class,但在object-c中,用@interface。例子:@interface circle :NSObject //定义名为circle的类,继承自NSObject{ ShapeColorfillColor;//定义ShapeColor类型的实例变量 fillColor; Shapebounds;//定义Shape类型的实例变量 bounds;}- (void)setFillColor:(ShapeColor)fillColor;//定义名为setFillColor的方法2.@implementation在object-c中 阅读全文

posted @ 2012-03-10 14:56 pengyingh 阅读(493) 评论(0) 推荐(0) 编辑

【object-c基础】Object-c基础之一:#import,NSLog(),数据类型
摘要:(1)在object-c中,用#import来代替C语言中的#include;在一般的头文件中都会用#import<Foundation/Foundation.h>;Foundation框架是一个处理用户界面之下的层中的特性,Foundation为cocoa框架的子集,cocoa框架还包括Application Kit框架。(2)NSLog此命令是向控制台显示输出语句,跟c语言的printf()很相似,比如:NSLog(@”Hello World!”);则是在控制台输出HelloWorld!双引号中的字符串前有一个@符号,这表示引用的字符串应该作为Cocoa的NSString元素来 阅读全文

posted @ 2012-03-10 14:55 pengyingh 阅读(415) 评论(0) 推荐(0) 编辑

【object-c基础】object-c基础之二:property,assign,copy,retain,release
摘要:例子:@property(nonatomic,retain) NSString *aString;property:属性的定义,相当于C语言的setter和getter方法。assign:简单的赋值,不更改索引的计数。copy:建议一个索引计数为1的对象,然后释放旧对象;retain:释放旧对象,将旧对象的值赋予新对象,再增加新对象的索引计数1。针对具体的数据类型在属性定义应该这样选择:使用assign:对基础的数据类型,比如NSInterger,CGFloat和C数据类型(int,float,double,char等等)。使用copy:针对NSString;使用retain:针对NSObje 阅读全文

posted @ 2012-03-10 14:55 pengyingh 阅读(630) 评论(0) 推荐(1) 编辑

利用 Delegate Design Pattern 进行 View Controller 之间的沟通
摘要:如果你是 Objective-C / Cocoa Touch 的重度使用者,那么你一定被一个东西困扰过:不同的 View Controller 之间,如果互相进行沟通?举个常见的例子。假设我们手头上有一个 UIViewController 实例,名叫 parentViewController ,在这个 parentViewController 生命周期的某个节点,它需要以 modal view controller 的形式 present 一个 UIViewController 实例。这个将要被 present 的 UIViewController 实例名叫 childViewControll 阅读全文

posted @ 2012-03-06 14:56 pengyingh 阅读(1404) 评论(0) 推荐(0) 编辑

Search and Comparison Options&&NSStringEncodingConversionOptions
摘要:Search and Comparison OptionsThese values represent the options available to many of the string classes’ search and comparison methods.enum { NSCaseInsensitiveSearch = 1, NSLiteralSearch = 2, NSBackwardsSearch = 4, NSAnchoredSearch = 8, NSNumericSearch = 64, NSDiacriticInsensitiveSearch = 128, NSWid 阅读全文

posted @ 2012-02-28 12:57 pengyingh 阅读(899) 评论(0) 推荐(0) 编辑

valueforkey和objectforkey区别
摘要:objectforkey 是NSDictionary的方法,valueforkey 是KVC的方法, 两者都是键值对应,区别是valueforkey 只允许使用NSString类型,objectforkey可以是任意类型. objectForKey:is anNSDictionarymethod. AnNSDictionaryis a collection class similar to anNSArray, except instead of using indexes, it uses keys to differentiate between items. A key is an ar 阅读全文

posted @ 2012-02-24 10:38 pengyingh 阅读(4906) 评论(0) 推荐(0) 编辑

isMemberOfClass的使用举例isKindOfClass的应用举例
摘要:sMemberOfClass方法是来确定对象是否是某一个类的成员。在下一个任务中,我们使用这个方法来验证一个特定的对象是否是一个特定的类成员例子:#import<Foundation/Foundation.h>#import<stdio.h>@interfaceClass1 : NSObject{}-(void)print;@end@implementationClass1-(void)print{printf("This is Class1 .\n");}@end@interfaceClass2 : NSObject{}-(void)prinf;@ 阅读全文

posted @ 2012-02-23 12:35 pengyingh 阅读(7300) 评论(1) 推荐(1) 编辑

继承(子类) 初始化 深层复制
摘要:小常识:可以在使用的数据类型中为实例变量和方法指定协议名称。这样,可以给Objective-C的编译器提供更多的信息,从而有助于检查代码中的错误。-(void)setObjectValue:(id<NSCopying>)obj ; 编译器知道,你期望任意类型的对象,只要其遵守该协议。@protocol NSCopying-(void)copyWithZone:(NSZone*)zone;@end@protocol NSCoding-(void)encodeWithCoder:(NSCoder*)acoder;-(id)initWithCoder:(NSCoder*)aDecoder 阅读全文

posted @ 2012-02-23 11:57 pengyingh 阅读(482) 评论(0) 推荐(0) 编辑

隐式循环
摘要:http://www.cnblogs.com/chenjunbiao/archive/2011/05/10/2041895.html定义一个Photo类,并带有2个draw方法, 一个带参数、一个不带参数。Photo.h#import <Foundation/Foundation.h>@interface Photo : NSObject {@private }-(void) draw;-(void) draw:(NSNumber*) number;@endPhoto.m#import "Photo.h"@implementation Photo- (id)in 阅读全文

posted @ 2012-02-20 19:03 pengyingh 阅读(285) 评论(0) 推荐(0) 编辑

NSInvocation的使用
摘要:http://blog.iosxcode4.com/?p=125在 iOS中可以直接调用 某个对象的消息 方式有2种一种是performSelector:withObject:再一种就是NSInvocation第一种方式比较简单,能完成简单的调用。但是对于>2个的参数或者有返回值的处理,那就需要做些额外工作才能搞定。那么在这种情况下,我们就可以使用NSInvocation来进行这些相对复杂的操作NSInvocation可以处理参数、返回值。会java的人都知道反射操作,其实NSInvocation就相当于反射操作。下面这个例子描述了如何使用NSInvocation,以下例子中如果要正常运 阅读全文

posted @ 2012-02-20 12:14 pengyingh 阅读(14587) 评论(0) 推荐(4) 编辑

Objective-C中static关键字用法
摘要:Objective-C中,在变量声明前加上关键字static,可以使局部变量保留多次调用一个方法所得的值。例如下面的一句Objective-C语句:static int hitCount = 0;声明整数hitCount是一个static静态变量。和其他常见局部变量不同,Objective-C中的static静态变量的初始值为0,所以前面显示的初始化是多余的。此外,它们只在程序开始执行时初始化一次,并且在多次调用方法时保存这些数值。所以编码序列1234567-(void) showPage{static int pageCount = 0;...++pageCount;...}可能出现在一个s 阅读全文

posted @ 2012-02-18 13:56 pengyingh 阅读(6000) 评论(0) 推荐(0) 编辑

区域化 NSLocale Class
摘要:与CFLocale自由转换.可以通过注册NSCurrentLocaleDidChangeNotification通知来获得区域位置改变消息生成–initWithLocaleIdentifier:+systemLocale//操作系统的,最初始的区域?+currentLocale//当前用户设定区域,肯能是缓存的+autoupdatingCurrentLocale//当前用户的系统区域设置,实时更新的信息–displayNameForKey:value: /* 某种locale中对指定区域中指定属性的显示值。并不是所有的属性都有显示值。 举例:NSLocale *frLocale = [[... 阅读全文

posted @ 2012-02-16 21:27 pengyingh 阅读(4110) 评论(0) 推荐(1) 编辑

NSCharacterSet 去除NSString中的空格
摘要:去除username中的空格,table newline,nextline代码如下:(三行代码)NSCharacterSet *whitespace = [NSCharacterSetwhitespaceAndNewlineCharacterSet];NSString *username= [mUsernameField stringValue];username = [usernamestringByTrimmingCharactersInSet:whitespace];注释:stringByTrimmingCharactersInSet:Returns a new string made 阅读全文

posted @ 2012-02-16 08:00 pengyingh 阅读(4469) 评论(0) 推荐(0) 编辑

ios中的随机数使用
摘要:有如下三种随机数方法:1.srand((unsigned)time(0));int i = rand() % 5;2.srandom(time(0));int i = random() % 5;3.int i = arc4random() % 5 (常用) ;注:rand()实际并不是一个真正的伪随机数发生器,random()会相对好点,但也不算理想。个人来说首选arc4random() ,原因就是它是一个真正的伪随机算法,而且范围是rand()的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x10000 阅读全文

posted @ 2012-02-14 12:29 pengyingh 阅读(538) 评论(0) 推荐(0) 编辑

使用NSClassFromString
摘要:NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。正常来说,id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];和id myObj = [[MySpecialClass alloc] init];是一样的。但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化。比如在iPhone中,NSTask可 阅读全文

posted @ 2012-02-14 10:26 pengyingh 阅读(144) 评论(0) 推荐(0) 编辑

NSException生成异常警告
摘要:[NSException raise:NSRangeException format:@"***%s: index(%d) beyond bounds (%d)", sel_getName(_cmd), index,[self count] - 1]; 阅读全文

posted @ 2012-02-11 07:40 pengyingh 阅读(168) 评论(0) 推荐(0) 编辑

在objc中使用struct
摘要:在java中,向方法中传递复杂参数,一般使用对象来传递。因为这样便于扩展。不需要改变方法的声明部分。在objc中,开始是发送多个参数。这样很麻烦。那么可以用到c里面的方式来做,通过struct传递参数。把相关的参数写在一个struct里面。声明struct需要在头文件中:#define MIN_VELOCITY 10#define LOOP_COUNT 100@interface AnimationView : UIView <UIGestureRecognizerDelegate>{ CALayer *startLayer; CALayer *startLayer2;}struc 阅读全文

posted @ 2012-02-10 19:45 pengyingh 阅读(505) 评论(0) 推荐(0) 编辑

使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)
摘要:NSArray中存放的是NSDictionary,可以使用策略的方法对NSDictionary进行定制,增加比较的方法。然后调用NSArray的sortUsingSelector方法对数组进行排序,这里使用NSDictionay中的时间对象的时间排序。具体操作如下:1.定制NSDictionaryXXX.h文件@interface NSMutableDictionary(myCompare)-(NSComparisonResult)myCompareMethodWithDict: (NSMutableDictionary*)theOtherDict;@endXXX.m文件#import &qu 阅读全文

posted @ 2012-02-10 10:07 pengyingh 阅读(557) 评论(0) 推荐(0) 编辑

在objc项目中使用常量的最佳实践(附:常量重定义解决办法)
摘要:之前,在在objc项目中使用常量中,使用c的预处理#define来设置常量。比如,可以做个头文件,然后在需要的类文件中import,使用常量。但这不是最佳实践。这样做可能是最好的方式,首先在比如叫Constants.h的头文件中:#import <Foundation/Foundation.h>extern NSString * const kInitURL;@interface Constants : NSObject {}@end这里使用到extern c关键字,表示这个变量已经声明,只是引用。const关键字表示变量是常量,不可修改。在objc的约定里,常量也是大小写混排的驼 阅读全文

posted @ 2012-02-10 08:54 pengyingh 阅读(6046) 评论(0) 推荐(2) 编辑

上一页 1 2 3 下一页

导航