2013-05-16
1、dealloc调用时机,正常情况下是在引用计数为0时,系统会自动调用。但是有意外,就是在对象中开启新的线程并且没有执行完的时候,即使引用计数为0也不会被调用。比如开启NSTimer、GCD开启新的线程……
2、viewWithTag到底有多深?根据tag可以获得的子View不只是儿子层,还包括孙子,甚至曾孙子,也就是所有。
This method searches the current view and all of its subviews for the specified view.
3、UIImageView的userInteractionEnabled属性默认值是NO,所以在它上面添加按钮之类的子view时要注意设置它的值为YES。
This property is inherited from the UIView parent class. This class changes the default value of this property to NO.
2013-05-23
1、创建plist文件,并写入读出
其中XXXXXX代表NSString、NSArray、NSDictionary、NSData。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *path = [paths objectAtIndex:0];NSLog(@"path = %@", path);NSString *fileName = [path stringByAppendingPathComponent:@"fileName.plist"];NSFileManager *fileManager = [NSFileManager defaultManager];if (![fileManager fileExistsAtPath:fileName]) { [fileManager createFileAtPath:fileName contents:nil attributes:nil];}// 写入[xxx writeToFile:fileName atomically:YES];// 读出XXXXXX *xxx = [XXXXXX xxxxxxWithContentsOfFile:filename];
解释一下writeToFile:atomically:方法中atomically参数的意义:如果为YES则保证文件的写入原子性,就是说会先创建一个临时文件,直到文件内容写入成功再导入到目标文件里;如果为NO,则直接写入目标文件里。
2013-05-24
1、判断当前网络是何运行商,首先导入CoreTelephony.framework
#import#import typedef enum { TelNetworkInfoErr,// 不是运行商,可能是wifi甚至是无网络 TelNetworkInfoMobile,// 移动 TelNetworkInfoUnicom,// 联通 TelNetworkInfoTelecom// 电信}TelNetworkInfo;- (TelNetworkInfo)getTelNetworkInfo { CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [info subscriberCellularProvider]; if (carrier == nil) { [info release]; return TelNetworkInfoErr; } NSString *code = [carrier mobileNetworkCode]; if ([code isEqualToString:@"00"] || [code isEqualToString:@"02"] || [code isEqualToString:@"07"]) { [info release]; return TelNetworkInfoMobile; } if ([code isEqualToString:@"01"]|| [code isEqualToString:@"06"]) { [info release]; return TelNetworkInfoUnicom; } if ([code isEqualToString:@"03"]|| [code isEqualToString:@"05"]) { [info release]; return TelNetworkInfoTelecom; } [info release]; return TelNetworkInfoErr;}
2013-5-29
1、OC动态特性
动态类型(Dynamic typing)运行时才决定对象的类型,简单的说就是id类型(可以指向任何类型的指针或者可以理解为指向任何未知类型的指针)。
动态绑定(Dynamic binding)基于动态类型,在某个实例确定后,其类型便被确定了,该对象的属性和响应的对象的属性和响应的消息也被完全确定了。
动态加载(Dynamic loading)根据需求加载所需要的资源,如图片。
2、Frame、Bounds和Center的区别和联系
Frame 描述当前视图在其父视图中的位置和大小
Bounds 描述当前视图在其自身坐标系统中的位置和大小
Center 描述当前视图的中心在其父视图中的位置
三个属性都是相互关联的相互影响的,其中要改变了,其他的属性也会改变。对视图进行旋转、缩放也都是相对于Center进行操作的。
2013-6-2
1、ios中获取一个唯一的字符串(利用UUID)
- (NSString *)getUniqueStrByUUID { CFUUIDRef uuidRef = CFUUIDCreate(NULL); CFStringRef uuidStrRef= CFUUIDCreateString(NULL, uuidRef); CFRelease(uuidRef); NSString *retStr = [NSString stringWithString:(NSString *)uuidStrRef]; CFRelease(uuidStrRef); return retStr;}
2、ios判断系统版本
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)// 用时候直接if (iPhone5) do something
另外,如果代码写界面的话,在iPhone5下View的高是568
期待下次更新……