标签:
1.null_resettable 的意思就是set方法可以为空,但是get方法不能为空,例如视图控制器的view你可以赋值为空,但是只要你在调用self.view时,它就不为空了,或则你什么也不做系统也会默认给你创建view,因为get不能为空,毕竟set是赋值,但是get是获得值的.
2.什么是泛型
泛型就是你可以为一个类的方法所带的参数为特定类型,其格式如下例如
@interface myFangXing<objectType> NSObject
-(void)myBook:(objType)books;
-(objectType)get:(int) sum;
那么不同的对象在调用这两个方法时就可以获得不同的参数,
myfFanXing<NSString*>*fangxing1 = [[myfFanXing alloc]init];
myfFanXing<NSArray*>*fangxing2 = [[myfFanXing alloc]init];
[fangxing1 myBook:(NSString*)];
[fanxing2 myBook:(NSArray*)];
3.状态栏是受最前面的控制器所控制的,
4.__iskindof 是说明返回的类型可以是它自己或则它的子类都可以
5.端口就是表示进程的,我们知道一个进程就是一个应用程序,例如我们要想找到百度服务器就要知道它的IP,但是我们知道百度肯定有很多应用程序,比如web应用程序,数据库应用程序,所以我们就需要端口来找到它们,因为web应用程序的端口默认为80,我们要访问的也是这个应用程序.这就是端口和IP,端口一般都要设置1024以上65535以下,因为1024以下的都被系统使用了. socket其实就是两个应用程序通信的端口,好比通信隧道的入口和进口.
TCP是建立链接,进行大数据传输.因为要连接所以效率相对要低.但是对http请求影响不大几乎可以忽略.在进行 链接之前要进行三次握手. UDP不需要建立链接,将数据及源和目的打包成数据包,每个数据包大小限制在64kb之内.因为不安全所以传输小,这样可以每次只传一点,多传几次就好了.如果每次传的很多,因为它是不安全传输,所以每次传的太多可能传输失败了,所有的东西都失败了,因为不需要链接,所以是不可靠协议,当然其速度也快. TCP和UDP就是传输的方式不同而已.
6.使用GCDAsyncSocket框架实现socket点对点通信,
7.要使用终端输入以下内容, ‘telnet IP 端口”或则输入telnet + 域名 (也就是网址)+端口
8.长连接一般用在即时通信,短链接一般都是用在http访问网页时.
http协议也就是双方准守的数据传输格式 例如是中文还是英文.
xmpp即时通信协议官网http://xmpp.org 3920是其官方文档
9.TCP用什么方式传输的协议.例如 圆通.韵达之类
10.对socket进行封装的类有
11.GCDAsyncSocket框架
12.%d打印int %zd打印nSInteger %p 打印地址
13.vFL (visual format languager) 语言就是”可视化格式语言” 这是苹果为了简化 autolayout 而推出的,
14.model 可以使用这个方法 [model setvalueforkeywithdictionary:dic]; 它会自动的为你生成属性的 set
方法;
15.自动布局的第三方框架 Masonry
16.正则表达式是改变不同类型的文本类型.
17.第一响应中
![技术分享](cid:778a46bd0176c9fbe67816a72e13441e)
18.加载图片的两种方法比较 :
![技术分享](cid:fe12dce4304882579b63bd59778a7456)
19.使用地图是一定要在info文件中加上NSLocationWhenInUseUsageDescription或者NSLocationAlwaysUsageDescription,选中哪一种就添加哪一种配置,
20.压缩的框架和方法
21.解压
22.在autolayout中leading指的是左边,traling指的是右边,
24.foundation框架下的字符串要转成 coreFoundation框架下的字符串,就要用到桥接__bridge,下图这个方法就是例子 桥接
![技术分享](cid:aa1a38405d48b589dbd0d448d8afc42a)
25.关于自动释放池的释放和创建
![技术分享](cid:90c25b75cd0dd8484e9896dc6e4eb80b)
26,使用NSURLConnection来进行大文件下载的代理方法
![技术分享](cid:3f6222a42d3ea30e1a59f547d5ed2028)
![技术分享](cid:41b8d1e0824c0759a4612f45f208c1b0)
27.现在一般已经弃用NSURLConnection了,原因是它有很多坑,其中之一就是你要自己去将代理方法加到子线程中,第二,发送的请求如果加在子线程中要手动添加runLoop和停止runLoop,第三就是它也要根据文件的大小去选用不同的下载方式,
28.开始和停止runLoop的方法,其中要建立一个全局CFRunLoop,
![技术分享](cid:531e00cba1be025b66527834a1ba2eb6)
29.使用NSURLSession发送post请求的方法
30.NSURLSession发送GET请求且不带请求头和请求体,因为一般带请求体和请求头的话最好用POST
![技术分享](cid:256d3928d1b6c844b111561b9958bbc9)
31,移动文件路径的方法有下图,其中suggestedFilename是response自动帮我们拼接服务器文件的名字
![技术分享](cid:8f3f923f460e8b0600e5521fecd74aa0)
32.对于网上所传的关于NSURLSession的创建方法中 NSURLSession*session = [NSURLSession sharesession];这个方法是不加代理的创建,所以如果想要签订代理,然后使用代理方法就要使用先创建NSURLSessionConfigurition这个配置的方法,
33.服务器返回的数据接收方式,默认为json
![技术分享](cid:999936c616a5775b2767a3f369d11f00)
34.加载工程目录下的URL可以通过这两个方法都可以
//获取文件URL路径
NSString
*path = [[NSBundle
mainBundle]
pathForResource:@"msgcome"
ofType:@"wav"];
NSURL*url = [NSURL
URLWithString:path];
NSURL
*fileUrl = [[NSBundle
mainBundle]
URLForResource:@"msgcome.wav"
withExtension:nil];
35.当定义一个类方法的时候是没有办法访问它的成员变量,所以我们可以通过设置静态成员变量,来解决.static NSMutableDictionary*dictionary;
36,如果想要保存一个东西,记得创建一个字典或者数组保存,记得尽量用懒加载.
37.如果想给一个图片加毛玻璃效果可以用UIToolBar控件
38.commend+C,command+F,command+V,return依次点击上面几个命令可以查找本文件里这个复制的字段都是在那个地方
39.这是坏内存访问报错,一般都是控制器已经销毁了,你还去访问它的地址,![技术分享](cid:fec4c4b8b4e72f4022a1d8cedc899ada)
,一般tableview刚开始有数据,你一滑动就没数据了,也可能是这个问题.
40.快捷地创建代码块,如果不想写死,可以使用<#内容#>这些就可以替代了.
40.SDWebImage清除缓存的方法
- (UITableViewCell
*)tableView:(UITableView
*)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath {
UITableViewCell
*cell = [tableView
dequeueReusableCellWithIdentifier:@"cell"];
if (cell ==
nil) {
cell = [[UITableViewCell
alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"cell"];
}
CGFloat
size = [SDImageCache sharedImageCache].getSize /
1000.0
/
1000;
cell.textLabel.text
= [NSString
stringWithFormat:@"清除缓存(已使用%.2fMB)",
size];
cell.accessoryType
=
UITableViewCellAccessoryDisclosureIndicator;
return
cell;
}
- (void)tableView:(UITableView
*)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath
{
[[SDImageCache sharedImageCache] clearDisk];
// [[NSFileManager defaultManager] removeItemAtPath:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>];
}
41.点击按钮创建控制器时.我们可以使用这个方法减少代码量,![技术分享](cid:b20d80dab7de312a05f43aeb07dc0c1c)
42.这个方法监视屏幕的旋转, ![技术分享](cid:6fc46492ded27b3e820159ce63c21488)
43.一般加在控制器上的控制器,尽量使用这个方法
![技术分享](cid:6f30e54dd89769e1395d2924ace173d2)
因为这样父控制器监听到的事件,就可以传给子控制器了,要不然它不会传的.
44.3D动画
![技术分享](cid:fb1730fd6dc9dd653195796a82c189bc)
45.通过xib加载的视图控制器的view一般默认都是长宽自由伸缩的,所以加上这个方法可以解决
![技术分享](cid:925d199630809e60536f65c1472eb05a)
46.static的作用
![技术分享](cid:90434740b10eab5fd3dff99f981f047e)
47.strong就是强引用,当你赋给属性一个对象给它之后,那么这个赋的对象就是strong这个属性了,你这个对象变了它也变,因为它俩变成一个对象了,
copy就是复制一份之后给属性,那么这个赋值的对象变了之后,这个属性也不会变.
48.加上static 那么这些常量只能在本文件使用了,如果不加全工程文件都能访问,
![技术分享](cid:0c3fae7ffebcaedfd12b77e6302ad416)
如果是常量尽量使用const,因为这样不会创建临时内存,而宏会创建临时文件.
#import
<UIKit/UIKit.h>
typedef
enum {
WZCTopicTypeAll =
1,
WZCTopicTypePicture =
10,
WZCTopicTypeWord =
29,
WZCTopicTypeVoice =
31,
WZCTopicTypeVideo =
41
} WZCTopicType;
/**
精华-顶部标题的高度
*/
UIKIT_EXTERN
CGFloat
const
WZCTitilesViewH;
/**
精华-顶部标题的Y
*/
UIKIT_EXTERN
CGFloat
const
WZCTitilesViewY;
/**
精华-cell-间距
*/
UIKIT_EXTERN
CGFloat
const
WZCTopicCellMargin;
/**
精华-cell-文字内容的Y值
*/
UIKIT_EXTERN
CGFloat
const
WZCTopicCellTextY;
/**
精华-cell-底部工具条的高度
*/
UIKIT_EXTERN
CGFloat
const
WZCTopicCellBottomBarH;
/**
精华-cell-图片帖子的最大高度
*/
UIKIT_EXTERN
CGFloat
const
WZCTopicCellPictureMaxH;
/**
精华-cell-图片帖子一旦超过最大高度,就是用Break
*/
UIKIT_EXTERN
CGFloat
const
WZCTopicCellPictureBreakH;
#import
<UIKit/UIKit.h>
/**
精华-顶部标题的高度
*/
CGFloat
const
WZCTitilesViewH =
35;
/**
精华-顶部标题的Y
*/
CGFloat
const
WZCTitilesViewY =
64;
/**
精华-cell-间距
*/
CGFloat
const
WZCTopicCellMargin =
10;
/**
精华-cell-文字内容的Y值
*/
CGFloat
const
WZCTopicCellTextY =
60;
/**
精华-cell-底部工具条的高度
*/
CGFloat
const
WZCTopicCellBottomBarH =
40;
/**
精华-cell-图片帖子的最大高度
*/
CGFloat
const
WZCTopicCellPictureMaxH =
1000;
/**
精华-cell-图片帖子一旦超过最大高度,就是用Break
*/
CGFloat
const
WZCTopicCellPictureBreakH =
250;
自学知识总结
标签:
原文地址:http://blog.csdn.net/wangzhenchao1234/article/details/51918415