IOS 学习笔记

原创
2013/05/16 15:01
阅读数 548

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 <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>

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进行操作的。



期待下次更新……

展开阅读全文
打赏
0
2 收藏
分享
加载中
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部