iOS零散知识点

1.通过UIDevice类的model属性可以得知当前设备是什么,比如模拟器、iPhone、iPad还是iPod。

2.使屏幕不变暗:[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

3.UILabel多行文本
(1)UILabel可以显示多行文本,它有一个属性叫numberOfLines,可以制定行的数量,超过则不显示。
(2)当Label的尺寸超过指定行数对应的高度时,文字会在UILabel的垂直中间的位置上,上下会留白。
(3)当numberOfLines属性指定为0时,则不限制行数。这时候就需要根据显示的文本内容来确定对应显示区域的大小,然后动态设置label的size。
(4)使用这个特性,会比UITextView有一个好处:UITextView显示内容时上下左右会留空白,造成在确定其Frame时会存在误差。而UILabel则不存在这个问题。

4.UISegmentControl类中两个没有用过的方法:可以对UISegmentControl界面进行定制
(1)-setWidth:forSegmentAtIndex:
(2)-setImage:forSegmentAtIndex;

5.去掉iOS桌面图标上的高亮效果的办法:在info.plist文件中加一个字段,Icon already includes gloss effects,选中,意思就是图标已经包含高亮效果,不用系统再自动添加了。

6.UITableView有两个属性,tableHeaderView,tableFooterView,用来添加表视图的头和尾,它不同于section的头和尾。

7.给控件加边框,圆角:
(1)添加QuartzCore.framework
(2)代码:
[view.layer setBorderColor:[[UIColor redColor] CGColor]];
[view.layer setBorderWidth:1.0f];
[view.layer setCornerRadius:8.0f];
[view.layer setMaskToBounds:YES];

8.自定义导航栏视图的几个方法:
(1)添加自定义title视图:self.navigationItem.titleView = xxx;
(2)添加左右自定义按钮:
    UIBarButtonItem *btItem = [[UIBarButtonItem alloc] initWithCustomView:xxx];
    self.navigationItem.rightBarButtonItem = btItem;
    或者:
    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:btItem];
(3)定制导航栏背景:
    iOS5之后,使用UINavigationBar的setBackgroundImage:forBarMetrics:方法可以定制导航栏背景。
    iOS5之前,新增一个UINavigationBar的扩展,重写drawRect方法,代码如下:
    -(void)drawRect:(CGRect)rect {  
        UIImage *image = [UIImage imageNamed: @"navBarBK.png"];  
        [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];  
    }

9.裁剪图片:
UIImage *image = xxx;
CGImageRef newImageRef = CGImageCreateWithImageInRect(image.CGImage,rect);
UIImage *newImage = [[UIImage alloc] initWIthCGImage:newImageRef];

10.让iOS程序在iOS4.0以及之后没有多任务,即按下home键之后程序直接退出:在info.plist中加入一个字段,Application does not run in bacground,打钩。

11.获取info.plist的内容:[[NSBundle mainBundle] infoDictionary];

12.屏幕截图:
UIView *currentView = xxx;
UIGraphicsBeginImageContext(currentView.bounds.size);
[currentView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//保存到相册
UIImageWriteToSavedPhotosAlbum(viewImage,nil,nil,nil);

13.Security.framework
(1)使用Security.framework可以实现钥匙串访问,读写,但是只能在真机上使用,模拟器会报错。可以用来保存一些私密数据,不用再为加密烦恼。
(2)苹果封装了KeychainItemWrapper类,用来对钥匙串进行操作。该类通过一个表明身份的字符串和访问组字符串来初始化。实例方法如下:
- (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;
- (void)setObject:(id)inObject forKey:(id)key;
- (id)objectForKey:(id)key;
- (void)resetKeychainItem;
(3)钥匙链不会随着程序的卸载或者固件重装被清除,可以用来维护持久的信息,例如可以判断某台设备是否是第一次安装某软件。

14.loadView和ViewDidLoad的区别
(1)viewDidLoad方法在控制器view创建成功之后调用,不管是通过nib初始化还是通过loadView方法初始化的。
(2)当view被请求,但是view为nil时,loadView方法就会被调用,一般用于使用代码来生成控件。

15.在应用中加入WIFI提示框的方法:
如果iOS程序用到了WIFI,在没有WIFI网络连接的情况下,需要WIFI连接提醒,只需要在info.plist中加入如下两个键值即可:
Applicatioin uses Wi-Fi    YES
SBUsesNetWork                3

16.通过字符串加载类名:
id object = [[NSClassFromString(@"Class1") alloc] init]; 
效果和下面一样:id object = [[Class1 alloc] init];
但是如果Class1不存在,上面的方法会返回nil,而下面的方法会报错。

17.UIWebView的使用:
(1)使用webView的loadRequest方法,可以加载本地或者网络的html文件。
(2)使用UIWebViewDelegate,可以获取浏览器网页开始加载和加载完毕事件,从而可以用来根据这些状态添加我们自己的UI界面,比如等待视图。也可以获取浏览器当前打开网页的网址,根据当前网址,我们也可以有自己的UI动作。
(3)通过stringByEvaluatingJavaScriptFromString方法,可以在浏览器控件外部调用JavaScript脚本。

18.当应用crash时,捕获错误日志:
(1)首先声明发生异常时的回调函数,格式如下:
     void MyUncaughtExceptionHandler(NSException *exception) {}
     通过NSException对象,可以获取错误时间,错误原因,错误堆栈。
()设置捕获回调:NSSetUncaughtExceptionHandler(&MyUncaughtExceptionHandler);

19.MPMoviePlayerController可以播放在线视频和音频(只支持Http Live Stream协议),以及本地的视频音频。支持的格式仅限于苹果规定支持的格式。

20.@Class和#import的区别:
(1)import会包含这个类的所有信息,包含实例变量和方法。而@Class只是告诉编译器,声明的是类的名称,至于这个类是如何定义的,先不用考虑,后面再告诉你。
(2)一般@Class只放在interface中,在实现类中,同时需要用@import来告诉编译器类里面的具体内容。
(3)使用@Class会增加编译效率。
(4)使用@Class可以解决循环依赖关系的问题。

21.StringWithFormat和@"str"的区别:
(1)@"str",没有引用计数效果,引用计数为-1,调用retain也没用。
(2)stringWithFormat使用自动释放,创建完成时,引用计数为1。

22.iOS中,int是4个字节,short是2个字节,char是1个字节,long int也是4个字节。一个字节8位。

23.@public 、@protected 、@private只会影响它的子类的访问权限,不会影响到类本身变量的访问权限。

24.在LLVM3.0编译器中,支持将实例变量写到实现文件中,可实现私有的成员变量。示例代码如下:
@implementation MyViewController{
    NSString *name;
}

25.set方法的写法:
if(_value != value){
[_value release];
_value = [value retain];
}

26.RunLoop监视操作系统的输入源,如果有事件数据,runLoop就发送消息,通知各个对象。它是一个一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用它的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。一个UI事件,一个Timer call,delegate call,都会是一个RunLoop。

27.自动释放池的release和drain的区别:
(1)release在GC(自动内存回收)环境下是一个空操作,不做任何事情。
(2)在引用计数环境下,drain的行为和release是一样的,但是在GC环境下,它会调用object_collect_if_needed来触发GC。

28.NSInteger和int的区别:
在苹果的API实现中,NSInteger时一个封装,它会识别当前操作系统的位数,自动但会最大的类型,位数不一样。封装可以查看苹果文档。

29.进程间通讯的方式(iOS中基本用不到):管道,信号量,共享内存段,消息队列,以及socket。

30.线程通讯的方式:performSelector。比如:
performSelector:onThread:withObject:waitUntilDone:
performSelectorOnMainThread:withObject:waitUntilDone:
cancelPreviousPerformRequestsWithTarget:selector:object:

31.如果一个NSArray中保存的是同种类型的对象,并且想对其中的每个对象都调用一个方法,可以使用makeObjectsPerformSelector:withObject:方法。

32.NSTime不是一个精准的定时器,当操作耗时很长或者阻塞,就可能错过一个点。

33.进程和线程的区别:
(1)线程是CPU操作的最小单元,进程是系统资源分配时的最小单元。
(2)线程间共享内存空间,进程的内存空间时独立的。
(3)进程中包含线程。

34.UIScrollView主要使用了装饰器模式。Cocoa通过利用NSClipView实例装饰对象提供了滚动技术,让用户控制对象的哪个部分是可见的。装饰器模式通过复合给对象添加了公共的可重用能力,用于替换通过子类化添加这些能力,可以在运行时添加或者配置装饰器。

35.SQLite相关api:
sqlite3_open、sqlite3_prepare_v2、sqlite3_bind_xxx、sqlite3_step、sqlite3_column_xxx、sqlite3_finalize、sqlite3_close。

36.类目(Catagory)
(1)使用类目,可以在不子类化的情况下,给一个类添加功能。
(2)当类目中的方法名和类中的方法名冲突时,类目的方法会比类以及子类中方法的优先级高。
(3)如果不提供类名,则类目中定义的方法被视为必须实现的API,如果缺少实现代码,则编译器会报警。

37.将NSLog的内容重定向至文件:
freopen([logFilePath cStringUsingEncoding:NSASCCIIEncoding], "a+", stderr);

38.extern关键字使用
(1)首先申明一个变量,比如:NSArray *resArray; 然后extern NSArray *resArray;
     这样,在项目里面的任何类里面,都可以访问resArray这个变量。
     此方法可以在一些需要共享数据的场合使用。
(2)extern "C",表示编译生成的内部符号使用c约定,大多出现在交叉C编译环境中。
    __cplusplus只在c++中有定义。

39.从iOS4.0开始,iOS类库增加了对正则表达式的支持,类名为NSRegularExpression。

40.从iOS5.0开始,iOS类库增加了对JSON的支持,类名为NSJsonSerialization。

41.在编译环境中添加"NSZombieEnabled"变量,并且置为YES,可以捕获EXE_BAD_ACCESS错误,能让错误提示的更精细。但是添加了此变量之后,即使对象的引用计数为0,内存也不会被回收,应用程序的内存使用会一直增加。所以在编译完成之后,要把这个变量删掉。

42.自定义TableViewCell的背景颜色和选择后的颜色:
将TableViewCell的backgroundView和SelectBackGroundView修改成指定的View。

43.tableView:willDisplayCell:forRowAtIndexPath方法:
这个方法在TableView要使用cell去绘制row之前调用,这个方法给代理机会去设置基于状态的属性,并且早于TableView,比如选择状态的颜色或者背景的颜色等。

44.修改UIAlterView默认的Frame高度,使用委托:
-(void)willPresentAlertView:(UIAlertView*)alertView {
    alertView.frame =CGRectMake(5.f,1.f,100.f,200.f);
}

45.由于TableView的cell重用机制,导致多个图片下载事件的回调会指向同一个cell。解决办法:在图像下载事件中记录当前cell的row,同时将cell的tag设置为row,当图片下载完毕时,先判断下载事件中记录的row和cell的tag是不是一致,如果一致,则显示图片到cell上,如果不一致,则不显示图像。

46.UIScrollView可以放大缩小显示的内容,它有一个参数用来控制缩放的幅度,zoomScale,默认是1.0。

47.让UIScrollView支持捏合动作:
(1)实现代理方法:viewForZoomingInScrollView,返回当前需要伸缩的视图对象,比如UIImageView。当两个手指捏合时,视图对象的size的值将会被改变。
(2)设置scrollView的最大和最小伸缩倍数,maximumZoomScale、minimumZoomScale。
(3)重写scrollView的layoutSubviews方法,在此方法中,可以根据需要重置视图对象的x和y值,后者根据视图的size属性,重置scrollView的contentSize。

48.ios自定义键盘:UITextField有两个属性:inputView,inputAccessoryView。
(1)inputView含义:输入界面。当你想要某输入框的输入键盘使用自定义的键盘的话,可以自己创建一个键盘,然后把键盘视图赋值给这个属性。当点击此输入框时,弹出的键盘就是我们自己的键盘了。
(2)inputAccessoryView含义:辅助输入界面,一般放在键盘的上方。可以增加类似于"上一项"、"下一项"、"完成"等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大连理工大学计算机原理实验,大连理工大学计算机原理实验第一次实验-20210406081759.pdf-原创力文档...

大连理工大学实验报告实验室(房间号) : 420 实验台号码: 班级: 电通 1402 姓名: 糜智华指导教师签字: 成绩:实验 一 汇编语言上机操作 &动态调试程序 DEBUG的使用 &运算类程序设计一、实验目的和要…

计算机硬件结构控制信息,计算机硬件的基本结构

在当前的信息社会中,计算机扮演着非常重要的角色. 以下是Baifen编辑器汇编的计算机硬件基本结构的内容. 欢迎阅读!电子数字计算机首先作为一种计算工具出现. 不难想象,如果计算机能够在没有人工干预的情况下自动完成计算,那么它必…

KVO和KVC简介

一、Key-Value-Observing--KVO(键值观察者模式)(1)简介:此机制可以在一个类中监听另外一个类的属性变化,包括我们自己的类和已有的Cocoa类库中的类。当被监听的类的属性发生了变化时,观察者会收到通知,可以针对属性变化添加自己的…

iOS中的异步和多线程概况

一、异步(1)当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如iOS类库中的NSURLConnectioin中使用代理的方式就是异步。(2)iOS类库中的异步调用提供自动的多线程并发&#xff0…

计算机系答辩麻烦,计算机专业的你,答辩时有多卑微?

你用英语都写不出来的东西就别指望用代码写了。又是一年毕业季,计算机专业的同学们,毕业设计都做好了吗?论文都写完了吗?查重过了吗?答辩准备好了吗?答辩,是你毕业前面临的最后一道关卡&#xf…

计算机A级作文,关于被计算机的作文(共一篇)-疾风作文网

【篇一:其物非故,其人亦存】科幻小说中,人工智能高度发达,甚至超过了人类的智力,计算机统治人类。看到这些,我们长舒一口气,或庆幸计算机智能暂时没有超过人类的风险,或是惴惴不安小…

面向对象设计与分析40讲(17)双重检查锁定(double-checked locking)范式

双重检查锁定&#xff08;也称为“双重检查锁定优化”&#xff09;是一种用于减少获取锁的开销的软件设计模式。它通过在获取锁之前测试锁定条件&#xff08;即“锁提示”&#xff09;来实现。只有在锁定条件检查表明需要锁定时才会进行锁定操作。 #include <atomic> #i…

Block总结

一、简介 Block代码块&#xff0c;本质上它和其它变量类似&#xff0c;不同的是代码块传递的是函数体&#xff0c;类似于selector的功能。调用和其它标准函数一样。声明方式有差别。二、代码块定义例&#xff1a;int ( ^ MyBlock)( int ) ^ (int m){ return m * 3; };1 …

计算机PPT03,南京大学计算机网络课件03.ppt

第3讲数据链路层 3 1数据链路层的基本概念 一 链路与数据链路 链路 link 就是一条无源的点到点的物理线路段 中间没有任何其他的交换结点 数据链路 datalink 则是另一个概念 这是因为当需要在一条线路上传送数据时 除了必须有一条物理线路外 还必须有一些必要通信协议来控制这些…

NSThread使用总结

一、创建NSThread&#xff1a;(1)使用NSThread类方法&#xff1a;detachNewThreadSelector:toTarget:withObject:该方法3个参数分别指定了线程执行的方法&#xff0c;目标&#xff0c;和传递的对象。但是要注意&#xff0c;使用这个方法时&#xff0c;并没有返回任何对象供操作…

甘肃计算机教室中标,大单纷至沓来 甘肃百亿工程浪潮电脑中标8000台

近日&#xff0c;浪潮电脑教育市场再传佳讯&#xff0c;在甘肃百亿工程项目中&#xff0c;凭借出众的产品性价比和针对细分市场的定制化解决方案&#xff0c;浪潮电脑一举拿下了8000台的采购大单&#xff0c;这是继宁夏中标之后浪潮电脑在百亿工程中的又一成功典范&#xff0c;…

NSOperationQueue简介

一、NSOperationQueue简介1.概述&#xff1a;NSOperationQueue类管理NSOperation对象的执行。NSOperationQueue可以被称为操作队列&#xff0c;NSOperation可以被称为操作。操作被添加到操作队列之后&#xff0c;操作队列会根据操作对象的优先级或者相互之间的依赖关系来执行操…

计算机 窗口打开的方法,如何打开命令行窗口?两种实用的方法介绍

Windows系统中常常会用到命令行窗口&#xff0c;那么我们该如何打开命令行窗口?接下来&#xff0c;小编为大家介绍两种实用的打开命令行窗口的技巧&#xff0c;再也不必担忧如何打开命令行窗口的烦恼了。第一种打开方法1.点击自己的电脑中的开始菜单&#xff0c;在菜单中找到运…

GCD简介一:基本概念和Dispatch Queue

一、什么是GCD&#xff1f;Grand Central Dispatch或者GCD&#xff0c;是一套低层API&#xff0c;提供了一种新的方法来进行并发程序编写。从基本功能上讲&#xff0c;GCD有点像NSOperationQueue&#xff0c;他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地…

大学生计算机二级大集报名最好,在校大学生如何报名计算机二级?

2009-12-05 回答首先要根据你的所学专业来衡量自己考哪项计算级二级有c语言&#xff0c; vb&#xff0c; vf&#xff0c; java&#xff0c; access&#xff0c; c 六项可选考其中一个你会的 考下来能拿计算机二级了考试分两部分&#xff0c;上机和笔试。笔试就是一些基本的操作…

GCD简介二:多核心的性能

一、概念为了在单一进程中充分发挥多核的优势&#xff0c;我们有必要使用多线程技术。在低层&#xff0c;GCD全局dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用&#xff0c;就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局队列进入相同…

怪哉翻译软件测试,[东方朔传翻译]东方朔传·怪哉原文与翻译

东方朔传怪哉原文与翻译原文&#xff1a;《太平广记》卷四七三引《东方朔传》汉武帝幸⑦甘泉&#xff0c;驰道中有虫&#xff0c;赤色&#xff0c;头牙齿耳鼻尽具&#xff0c;观者莫识①。帝乃使东方朔视之&#xff0c;还对②曰&#xff1a;“此虫名怪哉。昔时拘系⑧无辜&#…

GCD简介三:Dispatch Sources

一、何为Dispatch Sources简单来说&#xff0c;dispatch source是一个监视某些类型事件的对象。当这些事件发生时&#xff0c;它自动将一个block放入一个dispatch queue的执行例程中。我们到底讨论哪些事件类型&#xff1f;下面是GCD 10.6.0版本支持的事件&#xff1a;Mach por…

GCD简介四:挂起,目标指定,信号量

一、Dispatch Queue挂起dispatch queue可以被挂起和恢复。使用 dispatch_suspend函数来挂起&#xff0c;使用 dispatch_resume 函数来恢复。这两个函数的行为是如你所愿的。另外&#xff0c;这两个还是也可以用于dispatch source。一个要注意的地方是&#xff0c;dispatch que…

如何自己做网站发布到服务器上面,怎么做网站 四步教你搭建自己的网站

1、购买域名如果想要做一个自己的网站&#xff0c;购买一个自己喜欢的域名就是首先要做的&#xff01;当你购买好自己的域名&#xff0c;就走出了搭建自己网站的第一步&#xff01;2、购买空间/主机/服务器空间/主机/服务器&#xff0c;看着好像很复杂&#xff0c;其实很简单&a…