
OC基础
vaercly
IOS应用开发
展开
-
OC循环导入问题
Unkonwm type name "Women" 意思: 不能识别的类型Women 产生原因: #import 头文件时, 会将头文件中的内容赋值一份, 而当使用Women这个类时, 该类还未定义, 所以识别不了, 典型的循环导入问题 解决方案: 使用该类是不能把它当做一个类来使用, 所以在.h中使用@class Women; 将Women当做一个字符串来使用, 但是它原创 2014-08-04 17:21:06 · 679 阅读 · 0 评论 -
有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组)
NSArray *arr = [NSArray arrayWithObjects:@1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, nil]; NSUInteger numOfTeam = 0; //计算分组个数 if ([arr count] % 3 == 0) {原创 2014-08-12 21:16:11 · 1171 阅读 · 0 评论 -
OC新语法总结
1.方法与顺序无关2.枚举绑定数据类型enum { ObjectiveC, Java, Ruby, Python, Erlang};typedef NSUInteger Language;3. 属性不用写@synthesize4.语法简化4.1 NSNumberNSNumber *value;value = @12345;va原创 2014-08-13 12:56:01 · 762 阅读 · 3 评论 -
为NSString添加降序排序的category
@interface NSString (Compare)- (void)sayHi;//添加两个字符串比较的方法- (NSComparisonResult)compareAgainst:(NSString *)anString;@end#import "NSString+Compare.h"@implementation NSString (Compare)- (void)say原创 2014-08-12 21:18:58 · 1193 阅读 · 0 评论 -
category(类目)的用法,NSDate,NSTimeInterval类的使用
分类, 类目, category 目的: 为没有源代码的类添加方法(只能添加方法, 不能添加实例变量) 是扩充一个类的功能的方式之一, 为原有类扩充的方法成为原类的一部分, 使用即可 分类也分为.h(接口部分), 以及.m(实现部分) .h文件中填写方法的声明, .m文件填写方法的实现 分类的定义格式:.h中@interface开头 扩展类的类名 (分类名) @end结束原创 2014-08-12 21:13:14 · 1018 阅读 · 0 评论 -
通过分类为数组添加一个倒序的一个方法. 比如: 数组中元素为 @”aa”, @”bb”, @”cc”, @”dd”, @”ee”, 倒序完之后为: @”ee”, @”dd”,@”cc”,@”bb”,@
@interface NSArray (BackOfNSArray)//1. 通过分类为数组添加一个倒序的一个方法. 比如: 数组中元素为 @”aa”, @”bb”, @”cc”, @”dd”, @”ee”, 倒序完之后为: @”ee”, @”dd”,@”cc”,@”bb”,@”aa”.- (void)back:(NSMutableArray *)aArray;@end#import "N原创 2014-08-12 21:15:01 · 1212 阅读 · 0 评论 -
UIEvent,触摸事件,touchesBegan:, touchesEnded:, touchesMoved:等触摸方法,单击改变自身颜色, 双击改变俯视图颜色
UIEvent 事件是有设备捕获到用户对硬件的操作, 每一个事件都是一个UIEvent对象, iOS中的事件分三种: 触摸事件, 摇晃事件, 远程控制事件触摸事件: 是有用户对屏幕通过触摸产生的事件, 对于UIView 或UIView的子类, 都是能够接收到触摸事件的, 只是没有对触摸事件作出响应, iOS支持多点触摸, 若一个视图相对触摸事件作出响应, 只需在该类中实现, touchesBeg原创 2014-08-26 21:35:29 · 3699 阅读 · 0 评论 -
OC内存管理,MRC,手动引用计数,ARC,自动引用计数
alloc 开辟内存空间, 并且将对象的引用计数由0变1retain 将对象的引用计数加1release 将对象的引用计数立即减1autorelease 会将声明为autorelease的对象放入到离他最近的自动释放池中, 当自动释放池销毁时, 会向池中的每一个对象发送一个release消息内存管理基本原则: 若你对一个对象进行了alloc retain copy 之后, 你就拥有了该对象原创 2014-08-14 19:01:22 · 2085 阅读 · 0 评论 -
message sent to deallocated instance
message sent to deallocated instance原创 2014-08-14 16:06:32 · 675 阅读 · 0 评论 -
协议的基本用法和定义
#import //协议就相当于任务清单, 规定了要做的操作(只有以系列方法的声明), 谁服从该协议, 就要实现该协议的方法(完成任务清单中的任务), 所以协议只有.h文件, 没有.m文件@protocol TeachingProtocol //@optional 可选的, 被它修饰的方法服从协议的类可以选择实现(可以实现, 也可以不实现)//@required 必须的, 被它修饰的方法服原创 2014-08-13 22:40:33 · 669 阅读 · 0 评论 -
延展(Extension)定义用法
Extension 延展 也是扩充类的一种方式, 只不过延展的扩充是私有的, 是在.m文件中定义的 延展既可以扩展方法也可以扩展实例变量, 只不过都是私有的, 外界无法直接访问, 延展是为有源代码的类扩充内容@interface Person () { NSString *_aa; NSString *_bb;//延展中添加私有实例变量}- (void)sayMorning;原创 2014-08-13 22:39:48 · 2279 阅读 · 0 评论 -
属性,Property,点语法
属性是OC2.0之后出来的新的语法, 用来替代setter和getter方法, 使用属性可以快速创建setter和getter方法的声明, setter和getter的实现, 另外还添加了对实例变量操作的安全处理@property (nonatomic, retain) NSString *name;//暂时为retain@property (nonatomic, retain) NSStri原创 2014-08-12 08:06:14 · 711 阅读 · 0 评论 -
对数组中的自定义的类型根据姓名,年龄排序(升序, 降序)sortedArrayUsingSelector
//// Person.h// LessonSort//// Created by lanouhn on 14-8-9.// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.//#import @interface Person : NSObject { NSString *_name;/原创 2014-08-10 21:11:24 · 4096 阅读 · 0 评论 -
OC实例变量可见度 setter方法和getter方法
实例变量的可见度:一共有三种 @pubic:公共的, 在任何文件中都可以访问(访问方式是通过对象+指向操作符, 例如:per->name @protected:受保护的, 有一定的访问权限, 只允许在本类文件以及子类中访问, 其他文件不可以访问 @private:私有的, 只允许在本类文件中访问, 不可以在子类文件以及其他文件中访问 默认的可见度是@protecte原创 2014-08-04 16:36:19 · 1003 阅读 · 0 评论 -
继承
继承:当多个类出现部分相同的实例变量和方法时, 就要考虑继承 继承的使用:将多个类中相同的实例变量和方法提出来写成一个公共的父类子类继承父类, 会将父类中除了声明为@private的实例变量以及私有方法之外, 其余的内容都会被继承, 所以如果子类中有和父类同样的内容, 可以全部删除 私有方法:在.m文件中实现, 但是没有在.h中声明的方法, 叫做私有方法.私有方法不允许在外原创 2014-08-06 08:12:33 · 601 阅读 · 0 评论 -
NSString:创建,长度,取字符,是否以某字符串开头,结尾, 查找指定字符串的范围,截取,拼接,替换,比较,替换,数值转换,大小写转换
//1 创建对象 //1 便利构造器(+号方法) NSString *str1 = [NSString stringWithFormat:@"iPhone%d", 5]; NSLog(@"str1 = %@", str1); //2 alloc+初始化方法 NSString *str2 = [[NSString all原创 2014-08-06 20:59:54 · 4274 阅读 · 0 评论 -
NSMutableString,可变字符串,拼接,删除,插入,替换
NSMutableString *str = [NSMutableString stringWithFormat:@"lanouhenan"]; //对于可变字符串的增删改方法, 都是在原字符串基础上进行修改, 所以修改之后的原字符串的内容发生变化, 所以无需返回值 //1 在原字符串基础上拼接Frank [str appendFormat:@"Fr原创 2014-08-06 21:01:57 · 3350 阅读 · 0 评论 -
连接错误,linker command failed with exit code 1
产生原因:导入头文件时,导入了.m文件,使方法的实现在StuThree.m和main.m中编译时出现重复,即导入的不是.h文件 解决原因:将导入的头文件.m改成.h文件 错误原因:系统提供类的头文件被更改. 解决方案: (1)查找到如下代码. (2)将下列代码复制下来 /Users/lano原创 2014-08-08 14:33:33 · 644 阅读 · 0 评论 -
OC第四节NSArray,NSMutableArray,NSNumber总结
一 数组的价值:1 存储多个元素 2 存储的元素只能是对象, 对象可以是不同类型的 3 数组是一个有序的集合 4 数组中的元素可以重复, 而且重复的对象会成为数组元素二 创建数组1 通过便利构造器创建数组NSArray *arr1 = [NSArray arrayWithObjects:str1, str2, str3, str4, str5, str6, nil];arrayWi原创 2014-08-07 20:05:22 · 733 阅读 · 1 评论 -
malformed or corrupted AST file:"Unable to load module
错误原因:系统提供类的头文件被更改. 解决方案: (1)查找到如下代码. (2)将下列代码复制下来 /Users/lanouhn/Library/Developer/Xcode/DerivedData/ModuleCache/2BMQKH570KACS (3)打开Finder (4)点击前往原创 2014-08-08 14:44:31 · 815 阅读 · 0 评论 -
NSArray或者NSMutableArray常见错误was mutated while being enumerated
在IOS开发中,我们经常用的NSArray或者NSMutableArray ,但是当使用不当的时候,会有下面的错误提示。Collection was mutated while being enumerated.遇到这类错误的时候,是同时对同一个数组进行了操作。*这里说的是数组,其实别的类型的对象也出现这个问题,如:NSDictionary等*下面一个简单的出现这类错误的用法:原创 2014-08-07 19:38:23 · 4483 阅读 · 0 评论 -
字典管理通讯录的增删改查分组
//// AddressContact.h// OCHomeWorkSet//// Created by lanouhn on 14-8-8.// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.//#import @interface AddressContact : NSObject {原创 2014-08-09 10:39:45 · 742 阅读 · 0 评论 -
block 语句
//// main.m// LessonBlock// block语句// Created by lanouhn on 14-8-9.// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.////在其他.m文件中定义的全局变量要想在本.m文件中使用, 则需在本文件的.m中要用关键字extern修饰该变原创 2014-08-10 20:39:50 · 1728 阅读 · 0 评论 -
KVC
//KVC: key value coding 键值编码, 是一种间接访问实例变量的方式, 通过指定的key来找到对应的实例变量(切记:key是字符串)//KVC工作原理: 根据指定的key, 比如name //1 先查找该类是否有对应的setter方法:比如setName, 若有, 则通过setter方法给实例变量赋值, 若没有, 则就转到2 //2 查找该类有没有一个_+ke原创 2014-08-18 09:33:30 · 608 阅读 · 0 评论