有關(guān)oc中的枚舉類型
1、不推薦使用绪励,因為不能夠使用一種類型的方式表示枚舉躏结;
enum
{
TMEnumTestOne,
TMEnumTestTwo,
};
enum 類型
typedef enum
{
TMEnumTestOne,
TMEnumTestTwo,
} TMEnumTest;
enum TMEnumTest
{
TMEnumTestOne,
TMEnumTestTwo,
};
typedef enum TMEnumTest TMEnumTest;
將枚舉描述為一個類型TMEnumTest。
這種寫法也有局限性勃救,在作為函數(shù)參數(shù)時新锈,如果傳入NSInteger類型的數(shù)據(jù)鞠评,則需要強制轉(zhuǎn)換,否則會有類型不匹配的警告壕鹉,所以這種方式也不推薦剃幌。
老式enum寫法
enum
{
TMEnumTestOne,
TMEnumTestTwo,
};
typedef NSUInteger TMEnumTest;
這種寫法可以指定TMEnumTest的類型,并且作為函數(shù)參數(shù)時晾浴,傳入的值不需要進行強制類型轉(zhuǎn)換负乡。
但是這種寫法不會檢查枚舉的正確性,是好是壞需要自己判斷脊凰,
新式enum寫法
(一般都是下面的第一種寫法抖棘,好像第二種寫法也是有的,不過我很少這樣子寫狸涌,寫一下可以推薦使用這種方法切省,因為可以使用& 的方式表示兩種枚舉的情況而不用一個一個的來寫了)
typedef NS_ENUM(NSUInteger, TMEnumTest)
{
TMEnumTestOne,
TMEnumTestTwo,
};
typedef NS_OPTIONS(NSUInteger, TMEnumTest)
{
TMEnumTestOne = 0,
TMEnumTestTwo = 1 << 0,
};
NS_ENUM和NS_OPTIONS本質(zhì)是一樣的,僅僅從字面上來區(qū)分用途帕胆。NS_ENUM是通用情況朝捆,NS_OPTIONS一般用來定義“位枚舉”。位枚舉應(yīng)該是位移動來進行完成的懒豹。
這種寫法同樣作為函數(shù)參數(shù)時芙盘,傳入的值不需要進行強制類型轉(zhuǎn)換驯用。但是也同樣不會檢查枚舉的正確性,和 老式enum寫法 一樣儒老,
但是不同的是蝴乔,新式enum寫法 在使用switch時,會進行值的檢測驮樊,如果枚舉中無此值薇正,則會彈出警告,如下圖囚衔。這種方式見仁見智了挖腰。本人推薦這種寫法。
-
枚舉最大值
對于一般的枚舉佳魔,要獲取枚舉的最大值是很難的曙聂,因為隨著枚舉的擴充晦炊,最大值在不斷變化鞠鲜,這時推薦使用一個固定的枚舉表示最大值,例如:
typedef NS_ENUM(NSUInteger, TMEnumTest)
{
TMEnumTestOne,
TMEnumTestTwo,TMEnumTestMax, // 表示最大值
};
這樣就可以使用TMEnumTestMax表示枚舉TMEnumTest的最大值了断国。
- 位枚舉
位枚舉是一種特殊的枚舉贤姆,在apple的類中使用的很多,例如NSStringCompareOptions等稳衬。
typedef NS_OPTIONS(NSUInteger, TMEnumTest)
{
TMEnumTestOne = 0, // 0
TMEnumTestTwo = 1 << 0, // 1
TMEnumTestThree = 1 << 1, // 2
TMEnumTestFour = 1 << 2, // 4
};
- 位枚舉的特點是可以使用位運算來處理枚舉值霞捡,實際使用中可以用一個變量存儲多個枚舉值,表示互不影響的多個設(shè)置薄疚。
可以知道枚舉類型中一個枚舉變量可以包括多個枚舉值碧信,而不是我們單純的認(rèn)為一個枚舉變量只能夠有一個枚舉值。
但是有0 就會出現(xiàn)問題了街夭,也就是與0 都會出現(xiàn)錯誤的砰碴。
為了不出現(xiàn)面的情況,我們可以將枚舉類型從1開始板丽,而不是從0開始呈枉,也就是位枚舉類型是從值為1開始的。
動效:
http://www.cocoachina.com/design/20160729/17237.html
這個就是關(guān)于UI設(shè)計的一種美感
二維碼的效果:
http://www.cocoachina.com/swift/20160729/17221.html
二維碼應(yīng)該是怎么樣進行開發(fā)的埃碱,也即是如何進行完成的猖辫。
好像這個二維碼不是很好用的,也就是這個二維碼應(yīng)該是python的有關(guān)內(nèi)容砚殿,通過網(wǎng)站來實現(xiàn)啃憎。
有關(guān)于UIwindow的設(shè)置
可window不管是storyboard和xib都是可以的,只要設(shè)置window的背景顏色是透明的似炎。
同時也要注意hidden設(shè)置為false荧飞,就會彈出來凡人。
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #e4af0a}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545; min-height: 14.0px}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px '.PingFang SC'; color: #454545}span.s1 {font: 12.0px '.PingFang SC'}span.s2 {font: 17.0px 'PingFang SC'}span.s3 {font: 17.0px 'Helvetica Neue'}span.s4 {font: 12.0px 'Helvetica Neue'}
UIView animation (動畫效果)
http://www.cocoachina.com/ios/20160727/17199.html
reactiveCocoa swift首先要知道reactive oc 是怎么使用的
支持swift 2.x和oc
http://blog.devtang.com/2014/02/11/reactivecocoa-introduction/
http://www.cocoachina.com/swift/20160727/17210.html
據(jù)說:reactivecocoa + mvvm的模式進行開發(fā)
一種監(jiān)聽信號量的處理方式
runloop 深入研究**** Runloop ****與線程保活
http://www.cocoachina.com/ios/20160728/17220.html
技術(shù)點:
http://www.code4app.com/thread-9683-1-1.html
簡書中有一個直播的技術(shù)框架
http://www.reibang.com/p/3b956bbeeb47
http://www.reibang.com/p/b3e7fa514ab7
webView的使用
通訊交流很多人都是在使用“環(huán)信”叹阔,是什么東東挠轴,就是qq聊天的一種方式;
耳幢、需要閱讀一下swiftJSON 這個類
有關(guān)插屏幕的設(shè)置岸晦,為什么不用xib的方式進行設(shè)置呢?那是因為總是實現(xiàn)不了背景的透明睛藻,所以這里應(yīng)該都是通過storyBoard來實現(xiàn)透明的启上,有一點可以的話,再進
行修改店印。
插屏如果要重寫的時候冈在,應(yīng)該要注意一下是背景顏色以及相關(guān)的按鈕沒有顯示,可能是因為關(guān)聯(lián)到其他的工程的組件上面了按摘,所以這個要注意一下包券。
這個我也不知道為什么,所以應(yīng)該盡可能的避免其他的工程打開炫贤,它們似乎有自動聯(lián)系起來溅固。
為什么swift中l(wèi)et 這樣子用回出現(xiàn)錯誤?兰珍?侍郭??
查閱里面的閱讀內(nèi)容
deinit 相關(guān)的內(nèi)容退出的時候
總結(jié):
1掠河、廣告的彈出亮元,就是內(nèi)容上的彈出,為什么會顯示不出倆唠摹,可能聯(lián)系到其他的地方
還是會不出現(xiàn)半透明的現(xiàn)象爆捞,如果沒有出現(xiàn)想要的結(jié)果,就設(shè)置一下window的backgroundColor 為透明uicolor.clearcolor
總結(jié):
1跃闹、我們在不適用storyboard進行加載的時候嵌削,經(jīng)常也是這樣子的,需要設(shè)置window.backgroundColor = uicolor.cleancolor
2望艺、swift中應(yīng)該注意一下是什么苛秕?尤其是? 的使用找默,swift的語法
3艇劫、swift語言特性,是面向?qū)ο笳Z言
4惩激、collecitionView 的顯示店煞,就是內(nèi)容上的顯示== 來判斷是不是這個collectionView蟹演,通過scrollview的轉(zhuǎn)化也是沒有問題的,
5顷蟀、window的使用酒请,尤其是在彈層上面,這個東東應(yīng)該是盡可能使用storyBoard鸣个,而不是用xib羞反,xib不發(fā)實現(xiàn)別經(jīng)是透明或者半透明。
6囤萤、邏輯上的優(yōu)化盡可能的封裝昼窗。
有個問題:
1、就是oc中如果沒有值的時候涛舍,我們都是適用什么呢澄惊?一般都是if來進行判斷一下,然而數(shù)據(jù)解析我們都是適用jsonModel就是避免為空的時候出現(xiàn)崩潰富雅;
2掸驱、swift中就有了optional來進行檢查,沒有值也不會報錯吹榴。
swift中的optional的作用或者用法:
復(fù)習(xí):
1亭敢、就是約束的計算(oc語言里面)滚婉,這里有關(guān)約束的優(yōu)先級图筹,還有自動布局除了storyBoard還有幾個組件是通過代碼來進行完成的。
2让腹、尤其是在oc上面容易出現(xiàn)可能是有nil的情況远剩,nsstring的類型,什么時候是否為nil需要判斷一下是什么?
3骇窍、 有關(guān)緩存瓜晤,項目里面都是使用sqlite的小型數(shù)據(jù)庫
4、view上面的組件腹纳,laodview進場使員工的痢掠,layoutsubview() 等等方法;
5嘲恍、數(shù)據(jù)基本上都是在后臺上拉取的足画,這個過程是怎么樣進行處理的,
6佃牛、進度哪里來的數(shù)據(jù)在內(nèi)存中傳遞淹辞,我們是可以進行處理進度條以及有關(guān)的約束內(nèi)容。
7俘侠、pageViewcontroller 象缀、ADinterstialAd 這兩個新的東東是什么鬼蔬将;