一點(diǎn)小整理(前傳)

只是隨筆, 若有不知所云處, 敬請忽略.

1.ios9之后默認(rèn)不支持http, 要求必須是https 并且服務(wù)器HTTP協(xié)議必須使用1.2版本及以上. https 在傳輸數(shù)據(jù)時(shí) 通過二進(jìn)制層級加密. 傳輸?shù)氖羌用軘?shù)據(jù).
要禁止Ios9阻止 不安全傳輸.
在Info 中,app Transport Security Settings 添加一個(gè)子類 如圖.設(shè)置YES

Snip20160307_3.png

或右鍵info.plist 用原代碼的方式打開并輸入

Snip20160307_6.png

Snip20160307_7.png
   <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

2.上傳字符串形式的二進(jìn)制圖片,上傳不成功, 解決辦法:base64編碼


3.封裝了一個(gè)NSURLConectionDataDelegete 下載,但


4.swift 1.2中范圍用 0..9 在2.0中用0...9


5.一定不要相信自己的代碼是正確的,想辦法測試一下.避免錯(cuò)誤


6.在scrollView及其子類下使用 touchbegin 不會被調(diào)用.
因?yàn)閟crollView 中有手勢,而手勢是對touch的封裝,所以往往有手勢的地方會屏蔽touch的使用.


7.多線程, 完成回調(diào)在主線程執(zhí)行代碼的方法:

>1.  [self performSelectorOnMainThread: withObject: waitUntilDone:];
>2.  [self performSelector: OnThread:[NSThread mainThread] withObject: waitUntilDone:  ]
>3.   dispatch_async(dispatch_get_main_queue(),^{})

8.子控件的alpha值 不能比 父控件的高; 若子控件alpha值大于父控件alpha值 則以父控件為基準(zhǔn).


9.如果layer.contents中的像素超出了contents的邊界 那么contents支持向外延伸顯示(在此感謝Jayden)


Snip20160307_10.png

大致意思是: 如果需要像素顯示在長方形之外, contents image 將會支持延伸..
信步英語水平大概3.1級,請將就..


10.//消息轉(zhuǎn)發(fā)機(jī)制
/*
運(yùn)行時(shí)
調(diào)用方法意味著發(fā)送消息

//導(dǎo)入框架 <objc/runtime.h>

1).自己做一些處理
    +(BOOL)resolveInstanceMethod:(SEL)sel{

        if(self==@selector(run)){

        class_addMethod(self,sell,(IMP)eat,@)
}


}


2).實(shí)現(xiàn)消息轉(zhuǎn)發(fā)
-(id)forwardingTargetForSelector:(SEL)aSelector{
return [[Cat alloc]init];
}


3).完整消息轉(zhuǎn)發(fā)
// 給方法加個(gè)簽名

-(NSMethodSignature *)methhodSignatureForSelector:(SEL)aSelector{

}

11.UIAlerViewController 中 的style屬性中的"取消style -- Cancle" 只能有一個(gè). 否則會崩潰;


12.UIWindow 的顯示: 顯示最后一個(gè)hidden為NO的 window; 并不是顯示keyWindow; 覆蓋; window的hidden屬性默認(rèn)為YES;


13.description方法是 NSObject的 對象方法 +(NSString *)description; NSLog中 通過%@ 打印對象 就是調(diào)用的description方法;
重寫此方法時(shí),不要在此方法內(nèi)同時(shí)寫 "%@",''self'' 會死遞歸


14.tabBarController中 通過 自身 viewControllers 數(shù)組屬性的角標(biāo) 實(shí)現(xiàn)跳轉(zhuǎn),沒有modal show push方法; push是NavigationController的自有方法.


15.修改tabBar或者tabBarItem中的 setTintColor 屬性 會把系統(tǒng)默認(rèn)的兩個(gè)控制條的渲染顏色都更改;


16.字典的枚舉遍歷
<code>enumerateKeysAndObjectsWithOptions: usingBlock:</code>
<code>enumerateKeysAndObjectsUsingBlock:</code>


17.分類中不能添加成員變量{NSString *sdf} 能添加屬性( @property) 但是要自己實(shí)現(xiàn)set get方法 分類中添加屬性的其實(shí)只是添加了set get方法的聲明;


18.Dealloc在哪個(gè)線程執(zhí)行
一個(gè)對象的dealloc方法會在該對象的引用計(jì)數(shù)變?yōu)? 的線程被調(diào)用;


19.在.m中創(chuàng)建的@property 實(shí)例變量 可用KVC拿到.(運(yùn)行時(shí))


20.info.plist文件設(shè)置

  不懂英文,一直在歐陸,就不翻譯了...附[iOS keys 官方文檔](https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW2)

21.應(yīng)用程序啟動原理

這是一篇關(guān)于程序啟動原理和UIApplication的博客


22.NSOperation 的依賴關(guān)系 可以根據(jù)UI界面的順序來實(shí)現(xiàn)優(yōu)先下載;


23.NSSeesion 可后臺下載,也可在程序關(guān)閉之后下載;


double version = [[UIDevice currentDevice].systemVersion doubleValue];//表示當(dāng)前版本號;

25.方法 + (void)load :當(dāng)某個(gè)類或者某個(gè)分類加載進(jìn)內(nèi)存中時(shí) 調(diào)用一次; (只會加載一次所以只會調(diào)用一次);
程序開始運(yùn)行會調(diào)用load方法,只要程序中包含某個(gè)類的頭文件,就會被加載.


26.block 使用 copy 是從 MRC 遺留下來的“傳統(tǒng)”,在 MRC 中,方法內(nèi)部的 block 是在棧區(qū)的,使用 copy 可以把它放到堆區(qū).在 ARC 中寫不寫都行:對于 block 使用 copy 還是 strong 效果是一樣的切平,但寫上 copy 也無傷大雅眠蚂,還能時(shí)刻提醒我們:編譯器自動對 block 進(jìn)行了 copy 操作宠纯。如果不寫 copy ,該類的調(diào)用者有可能會忘記或者根本不知道“編譯器會自動對 block 進(jìn)行了 copy 操作”柱告,他們有可能會在調(diào)用之前自行拷貝屬性值截驮。這種操作多余而低效。
轉(zhuǎn)載..
應(yīng)該是ChenYilong大牛的,鏈接就只附到這吧...具體地址煩請自行查找,更能學(xué)習(xí)很多東西;


27.測試動畫時(shí)間

let anim = toolbar.layer.animationForKey("position")
print("動畫時(shí)長 \(anim?.duration)") 

給uiview添加MotionEffect

就像在Home頁的壁紙际度,隨著手機(jī)角度移動葵袭,壁紙會動。

UIInterpolatingMotionEffect * xEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
xEffect.minimumRelativeValue =  [NSNumber numberWithFloat:-40.0];
xEffect.maximumRelativeValue = [NSNumber numberWithFloat:40.0];
[img addMotionEffect:xEffect];

獲取正在運(yùn)行的程序

#import <sys/sysctl.h>


- (NSArray *)runningProcesses {
    
    int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
    size_t miblen = 4;
    
    size_t size;
    int st = sysctl(mib, miblen, NULL, &size, NULL, 0);
    
    struct kinfo_proc * process = NULL;
    struct kinfo_proc * newprocess = NULL;
    
    do {
        
        size += size / 10;
        newprocess = realloc(process, size);
        
        if (!newprocess){
            
            if (process){
                free(process);
            }
            
            return nil;
        }
        
        process = newprocess;
        st = sysctl(mib, miblen, process, &size, NULL, 0);   

       } while (st == -1 && errno == ENOMEM);if (st == 0){
        
        if (size % sizeof(struct kinfo_proc) == 0){
            int nprocess = size / sizeof(struct kinfo_proc);
            
            if (nprocess){
                
                NSMutableArray * array = [[NSMutableArray alloc] init];
                
                for (int i = nprocess - 1; i >= 0; i--){
                    
                    NSString * processID = [[NSString alloc]initWithFormat:
                                          @"%d", process[i].kp_proc.p_pid];

                    NSString * processName = [[NSString alloc]initWithFormat:
                                           @"%s", process[i].kp_proc.p_comm];
                    
                    NSDictionary * dict = [[NSDictionary alloc]initWithObjects
                        :[NSArray arrayWithObjects:processID, processName
                                     ,nil] forKeys:[NSArray arrayWithObjects:
                                                         @"ProcessID", 
                                                         @"ProcessName",
                                                         nil]];
                   
                    [array addObject:dict];
                }
                
                free(process);
                return array;
            }
        }
    }
    
    return nil;
}

 NSArray * processes = [self runningProcesses];
    for (NSDictionary * dict in processes){
        NSLog(@"%@ - %@", [dict objectForKey:@"ProcessID"],
                           [dict objectForKey:@"ProcessName"]);
    }
獲取所有已經(jīng)安裝的app

#include <objc/runtime.h>

Class LSApplicationWorkspace_class=objc_getClass("LSApplicationWorkspace");

NSObject* workspace = [LSApplicationWorkspace_class performSelector:
@selector(defaultWorkspace)];

NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);

轉(zhuǎn)載..當(dāng)時(shí)直接copy了...鏈接就....

NSNotification必須配對出現(xiàn)

NSNotification有add甲脏,必須在dealloc中remove眶熬,否則會造成循環(huán)引用妹笆。另外注意 NSNotification 中的target是阻塞執(zhí)行的块请。執(zhí)行的線程和poster(發(fā)送者)一致,如果想更新UI拳缠,注意應(yīng)在main_thread中執(zhí)行墩新。


NSTimer 的引用問題: 記得invalidate

必須清除NSTimer,否則造成循環(huán)引用


滑動的時(shí)候隱藏navigationbar

navigationController.hidesBarsOnSwipe = Yes

33.多態(tài) 父類指針可以接收實(shí)例化子類 如 界面?zhèn)髦?

UIViewController = segue.destinationViewController;
這里的segue.destinationViewController  可能是一個(gè)任意的UIViewController的子類;

34.重寫set方法 參數(shù)可以隨機(jī), 下面是重寫了UIImage *image的set方法.

- (void)setImage:(NSString *)image {
    if (_image != [UIImage imageNamed: image]) {
         [_image release];
          _image = [[UIImage imageNamed: image] retain];
    };
}

35.UIControl 的子類: UIButton UIPickerControl segmentControl 等


36.修改tabBar或者tabBarItem中的 setTintColor 屬性 會把系統(tǒng)默認(rèn)的兩個(gè)控制條的渲染顏色都更改;


37.分類可以添加屬性,但系統(tǒng)不會幫我們自動創(chuàng)建帶下劃線的實(shí)例變量也不會幫我們實(shí)現(xiàn) set get方法, 只會聲明set get方法;


38.Button 的contentEdgeInsets,imageEdgeInsets,titleEdgeInsets屬性 可改變Button圖片的偏移位置. 甚至可超出button的范圍顯示,詳見第9條;


39.UIImageView 中 animationImages 數(shù)組可添加 動畫圖片; 并通過設(shè)置動畫執(zhí)行時(shí)間屬性animationDuration 和 動畫重復(fù)次數(shù)animationRepeatCount 來設(shè)置動畫. 再手動調(diào)用開始動畫,即可實(shí)現(xiàn)動畫效果 [imageView startAnimating];


40.設(shè)置button中 image屬性圖片 的拉伸形式:
1.加載背景圖片
2.更改模式
3.設(shè)置給button

  1).UIImage *image;   

  //若只想把圖片部分拉伸窟坐,而不是全部拉伸海渊,就要用此函數(shù)
  2).[image sretchableImageWithLiftCapWidth:  toCapHight:] 
  //leftCapWidth:左側(cè)不拉伸區(qū)域
  //topCapHeight:上方不拉伸區(qū)域

  3).添加


這是以前記下的找了一上午的Bug,留念..
使用storyBoard加載多控制器不能用alloc init 需要先加載storyBoard 然后通過storyBoard instentiate加載一個(gè)控制器. 這樣創(chuàng)建的控制器才能加載到你搭建的界面;


42.添加子控制器的 push方法是導(dǎo)航控制器的方法,只有導(dǎo)航控制器及子類可以使用; show方法是UIViewController的,所有繼承自他都可以使用.


43.modal 與 push 有關(guān)聯(lián)用push 有關(guān)聯(lián)指的是 UINavigationController子控制器;


44.統(tǒng)一設(shè)置導(dǎo)航欄顏色或 其他全局的外觀,需要在AppDelegate中 通過外觀代理獲取自身的對象 來設(shè)置. 外觀代理: appearance
例如統(tǒng)一設(shè)置導(dǎo)航欄外觀:

UINavigationBar *bar = [UINavigationBar appearance];    

[bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];  
NSDictionary *dict = @{NSForegroundColorAttributeName:[UIColor whiteColor]};    
[bar setTitleTextAttributes:dict];
[bar setTintColor:[UIColor whiteColor]];

45.應(yīng)用程序啟動先執(zhí)行main函數(shù),根據(jù)第三個(gè)參數(shù)創(chuàng)建 UIApplication根據(jù)第四個(gè)參數(shù)創(chuàng)建AppDelegate并賦值給application的delegate屬性,然后根據(jù)info.plist加載Main.storyboard及LaunchScreen.storyboard 若沒有指定Main.storyboard 就會進(jìn)入AppDelegate 執(zhí)行application: didFinishLaunchingWithOptions:


46.如何保持圖片最原始的效果绵疲,不要渲染

[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

47.工廠模式?

// 沒想到什么,暫用字典轉(zhuǎn)模型隨便寫一下..

#import "XBModel"

@implementation XBModel
// 此為父類方法
+ (instanstype)modelWithDict {

     id obj = [[self alloc]init];
          [obj setValuesForKeysWithDictionary:dict];
     
      return obj;
}

子類中: //
      若子類沒有重寫父類方法,那么調(diào)用父類的方法,父類中不使用[self alloc]創(chuàng)建,直接用[XBModel alloc]
      會返回一個(gè)父類對象,使子類指針指向父類.
 
      若是只用self則會 父類指針指向子類對象. 即用id又用self則會很靈活,因?yàn)榉祷刂凳莍nstanstype.

48.block速記符號: inline block,能夠快速敲出一個(gè)block的基本結(jié)構(gòu)


49.隊(duì)列優(yōu)先級被設(shè)置成 DISPATCH_QUEUE_PRIORITY_BACKGROUND之后,會被設(shè)置成后臺級別的隊(duì)列,它會等待所有比它級別高的隊(duì)列中的任務(wù)執(zhí)行完或CPU空閑的時(shí)候才會執(zhí)行自己的任務(wù)臣疑。例如磁盤的讀寫操作非常耗時(shí)盔憨,如果我們不需要立即獲取到磁盤的數(shù)據(jù),我們可以把讀寫任務(wù)放到后臺隊(duì)列中讯沈,這樣讀寫任務(wù)只會在恰當(dāng)?shù)臅r(shí)候去執(zhí)行而不會影響需要更改優(yōu)先級的其他任務(wù)郁岩,整個(gè)程序也會更加有效率。


50.viewDidLoad中 還沒有進(jìn)行自動布局,所以控件的Frame是設(shè)置的Frame, 而viewDidLayoutSubviews執(zhí)行完[super viewDidLayoutSubviews]之后,才是布局后的真正想要的Frame;也可在后續(xù)的viewDidApear等controller生命周期方法中獲得


51.Block 本質(zhì)是結(jié)構(gòu)體,指向結(jié)構(gòu)體的指針


52.模型繼承于NSObject 為了使用KVC


53.ctr +r 縮排


54.四句話講明白Swift閉包:
Swift中沒有指針的概念
1>閉包是一段準(zhǔn)備好的代碼塊,在需要的時(shí)候執(zhí)行
2>閉包是沒有名字的函數(shù)
3>函數(shù)是有名字的閉包
4>只要類型就可以賦值


55.重寫屬性的set方法 不僅可在 賦值之后做一些事情 也可根據(jù)需求在賦值之前做一些事情. Swift 中對應(yīng) didSet{} willSet{}


[[UIImage imageNamed:@"uusername"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//圖片是白色,代碼之后顯示綠色,  加上
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal后顯示正常

Git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缺狠,一起剝皮案震驚了整個(gè)濱河市问慎,隨后出現(xiàn)的幾起案子挤茄,更是在濱河造成了極大的恐慌如叼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡猴仑,警方通過查閱死者的電腦和手機(jī)崖飘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門达椰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人频鉴,你說我怎么就攤上這事施敢∑袜拢” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵改淑,是天一觀的道長捏肢。 經(jīng)常有香客問我鸵赫,道長,這世上最難降的妖魔是什么爆捞? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任奉瘤,我火速辦了婚禮勾拉,結(jié)果婚禮上煮甥,老公的妹妹穿的比我還像新娘盗温。我一直安慰自己,他們只是感情好成肘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布卖局。 她就那樣靜靜地躺著,像睡著了一般双霍。 火紅的嫁衣襯著肌膚如雪砚偶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天洒闸,我揣著相機(jī)與錄音染坯,去河邊找鬼。 笑死丘逸,一個(gè)胖子當(dāng)著我的面吹牛单鹿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播深纲,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼仲锄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了湃鹊?” 一聲冷哼從身側(cè)響起儒喊,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎币呵,沒想到半個(gè)月后怀愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡余赢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年掸驱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没佑。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毕贼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛤奢,到底是詐尸還是另有隱情鬼癣,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布啤贩,位于F島的核電站待秃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痹屹。R本人自食惡果不足惜章郁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暖庄,春花似錦聊替、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肩钠,卻和暖如春泣港,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背价匠。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工当纱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人踩窖。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓惫东,卻偏偏與公主長得像,于是被迫代替她去往敵國和親毙石。 傳聞我的和親對象是個(gè)殘疾皇子廉沮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)徐矩,斷路器滞时,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • 1.屬性readwrite,readonly滤灯,assign坪稽,retain,copy鳞骤,nonatomic 各是什么作...
    曾令偉閱讀 1,044評論 0 10
  • 基礎(chǔ) 1. 為什么說Objective-C是一門動態(tài)的語言窒百? 2. 講一下MVC和MVVM,MVP豫尽? 3. 為...
    波妞和醬豆子閱讀 3,307評論 0 46
  • 把網(wǎng)上的一些結(jié)合自己面試時(shí)遇到的面試題總結(jié)了一下篙梢,以后有新的還會再加進(jìn)來。 1. OC 的理解與特性 OC 作為一...
    AlaricMurray閱讀 2,546評論 0 20
  • 看到這個(gè)題目美旧,你可能會想這不是宣揚(yáng)宿 命論或者出身論嗎?倒還真不是渤滞,我想講的恰 恰是要破除那些出身決定命運(yùn)的舊觀念...
    聽雨廖哥閱讀 413評論 0 0