tips-0

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #ffffff; min-height: 21.0px}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #ffffff}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px 'Heiti SC Light'; color: #ffffff}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #4cbf57}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px 'Heiti SC Light'; color: #4cbf57}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #e44448}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #d28f5a}p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c2349b}p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px 'Heiti SC Light'; color: #e44448}p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #8b84cf}p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px 'Heiti SC Light'; color: #d28f5a}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #8b84cf}span.s3 {font: 18.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures}span.s4 {font: 18.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #8b84cf}span.s5 {font: 18.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s6 {font-variant-ligatures: no-common-ligatures; color: #c2349b}span.s7 {font: 18.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #ffffff}span.s8 {font-variant-ligatures: no-common-ligatures; color: #ffffff}span.s9 {font-variant-ligatures: no-common-ligatures; color: #e44448}span.s10 {font-variant-ligatures: no-common-ligatures; color: #4cbf57}span.s11 {font-variant-ligatures: no-common-ligatures; color: #d28f5a}span.s12 {font: 18.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #c2349b}span.s13 {font: 18.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures; color: #4cbf57}span.s14 {font: 18.0px 'Apple Color Emoji'; font-variant-ligatures: no-common-ligatures; color: #8b84cf}span.s15 {font: 18.0px 'Apple Color Emoji'; font-variant-ligatures: no-common-ligatures}span.Apple-tab-span {white-space:pre}

1.添加全局?jǐn)帱c(diǎn),讓程序停在錯(cuò)的地方 Add Exception Breakpoint

  1. 延遲多少秒調(diào)用誰(shuí)的什么方法
    //afterDelay 秒
    //self 這個(gè)方法屬于誰(shuí)
    //performSelector : 方法?
    [self performSelector:@selector(stand) withObject:nil afterDelay:self.imageView.animationDuration];
    2.1 // 延遲0.25秒就會(huì)調(diào)用里面代碼塊的東西
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    //code...
    });

  2. NSBundle
    //獲取到我們的APP的路徑
    NSBundle *myMainBundle = [NSBundle mainBundle];
    // 返回的就是一個(gè)圖片的全路徑
    NSString *filePath = [myMainBundle pathForResource:iconName ofType:@"png"];

  3. 使用OC數(shù)組的迭代器來(lái)遍歷
    // 每取出一個(gè)元素就會(huì)調(diào)用一次block
    // 每次調(diào)用block都會(huì)將當(dāng)前取出的元素和元素對(duì)應(yīng)的索引傳遞給我們
    // obj就是當(dāng)前取出的元素, idx就是當(dāng)前元素對(duì)應(yīng)的索引
    // stop用于控制什么時(shí)候停止遍歷
    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if (idx == 1) {
    *stop = YES;
    }
    NSLog(@"obj = %@, idx = %lu", obj, idx);
    }];

  4. 如果使用OC數(shù)組存儲(chǔ)對(duì)象, 可以調(diào)用OC數(shù)組的方法讓數(shù)組中所有的元素都執(zhí)行指定的方法
    // 注意點(diǎn): 如果數(shù)組中保存的不是相同類型的數(shù)據(jù), 并且沒(méi)有相同的方法, 那么會(huì)報(bào)錯(cuò)
    // [arr makeObjectsPerformSelector:@selector(say)];

// withObject: 需要傳遞給調(diào)用方法的參數(shù)
[arr makeObjectsPerformSelector:@selector(sayWithName:) withObject:@"lnj"];

  1. 該方法默認(rèn)會(huì)按照升序排序
    NSArray *newArr = [arr sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(Person *obj1, Person obj2) {
    // 每次調(diào)用該block都會(huì)取出數(shù)組中的兩個(gè)元素給我們
    // 二分
    // NSLog(@"obj1 = %@, obj2 = %@", obj1, obj2);
    return obj1.age > obj2.age;
    // return obj1.age < obj2.age;
    /

    if (obj1.age > obj2.age) {
    // 5 4
    return NSOrderedDescending;
    }else if(obj1.age < obj2.age)
    {
    // 4 5
    return NSOrderedAscending;
    }else
    {
    return NSOrderedSame;
    }
    */
    }];

  2. // 如何判斷當(dāng)前是ARC還是MRC?
    // 可以在編譯的時(shí)候判斷當(dāng)前是否是ARC

if __has_feature(objc_arc)

NSLog(@"ARC");

else

NSLog(@"MRC");

endif

8.#if LP64 || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;

else

typedef int NSInteger;
typedef unsigned int NSUInteger;

endif

  1. 獲取屏幕的尺寸
    // CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;

10.#if defined(LP64) && LP64

define CGFLOAT_TYPE double

define CGFLOAT_IS_DOUBLE 1

define CGFLOAT_MIN DBL_MIN

define CGFLOAT_MAX DBL_MAX

else

define CGFLOAT_TYPE float

define CGFLOAT_IS_DOUBLE 0

define CGFLOAT_MIN FLT_MIN

define CGFLOAT_MAX FLT_MAX

endif

/* Definition of the CGFloat' type andCGFLOAT_DEFINED'. */

typedef CGFLOAT_TYPE CGFloat;

11-1. initWithFrame 使用代碼初始化的時(shí)候會(huì)調(diào)用,在這里一般做一些僵缺,不會(huì)調(diào)用任何方法
"用途:初始化操作(子控件)"

init 在調(diào)用init方法的時(shí)候 系統(tǒng)默認(rèn)會(huì)調(diào)用一次initWithFrame

----------------------------使用代碼來(lái)創(chuàng)建會(huì)調(diào)用的的方法-----------------------

initWithCoder 當(dāng)從stroyboard/xib加載就會(huì)調(diào)用這個(gè)方法,而這個(gè)方法一般是正在初始化子控件
也就是這個(gè)方法內(nèi)部自控件可能是沒(méi)有值
"用途:當(dāng)你需要在初始化子控件之前做一些操作的時(shí)候,可以在這個(gè)方法內(nèi)部寫"

awakFromNib 只要調(diào)用完了initWithCoder之后茴扁,就直接調(diào)用awakeFromNib
當(dāng)調(diào)用的時(shí)候瓶籽,這個(gè)里面的子控件都是有值
"用途:在這里可以給自控件賦值(屬性)"
----------------------------通過(guò)xib/storyboard加載會(huì)調(diào)用的方法-----------------------

11-2.
+(instancetype)shopView
{

//  LYSShopsView *view=[[NSBundle mainBundle] loadNibNamed:@"LYSShopsView" owner:nil options:nil].firstObject;

//    NSArray *arr=[[NSBundle mainBundle] loadNibNamed:@"LYSShopsView" owner:nil options:nil];
//    LYSShopsView *view=(LYSShopsView *)arr[0];

/**傳入NSBundle對(duì)象時(shí),nil代表mainBundle
 *Returns an UINib object initialized to the nib file in the specified bundle.
 *拿到xib-->nib文件對(duì)象
 */
UINib *nib=[UINib nibWithNibName:@"LYSShopsView" bundle:nil];
//獲取nib文件對(duì)象內(nèi)的控件數(shù)組
NSArray *arr=[nib instantiateWithOwner:nil options:nil];
LYSShopsView *view=(LYSShopsView *)arr.lastObject;
return view;

}

12.產(chǎn)生隨機(jī)數(shù)
u_int32_t arc4random(void);
void arc4random_addrandom(unsigned char * /dat/, int /datlen/);
void arc4random_buf(void * /buf/, size_t /nbytes/) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
void arc4random_stir(void);
u_int32_t
arc4random_uniform(u_int32_t /upper_bound/) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);

ifdef BLOCKS

int atexit_b(void (^)(void)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
void *bsearch_b(const void *, const void *, size_t,
size_t, int (^)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);

endif /* BLOCKS */

13.//創(chuàng)建一個(gè)字典(內(nèi)部包含VFL語(yǔ)句中用到的控件)的快捷宏定義
NSDictionaryOfVariableBindings(...);

14.//創(chuàng)建類名字符串
NSStringFromClass(id);

15.復(fù)習(xí)簡(jiǎn)單plist文件解析
// 1.拿到plist的文件路徑
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cars.plist" ofType:nil];
// 2.創(chuàng)建對(duì)應(yīng)的JSON數(shù)據(jù)
NSArray *dicts = [NSArray arrayWithContentsOfFile:filePath];
// 3.JSON->Model
NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:dicts.count];
for (NSDictionary *dict in dicts) {
// 3.1 Dict->Model
XMGCar *obj = [XMGCar carWithDict:dict];
[arrayM addObject:obj];
}

15-1. Dict->Model

+ (instancetype)carWithDict:(NSDictionary *)dict
{
    XMGCar *car = [[self alloc] init];
    //    car.name = dict[@"name"];
    //    car.icon = dict[@"icon"];
    //    car.money = dict[@"money"];
    
    // kvc 相當(dāng)于上面3行
    [car setValuesForKeysWithDictionary:dict];
    
    return car;
}

16.KVC 可以修改ReadOnly 的key 但是按照編碼規(guī)范不可以改(可以改但不能)

17.被static修飾過(guò)的局部變量?jī)H僅是延長(zhǎng)生命周期,,對(duì)外還是不可見(jiàn),就是說(shuō)還是局部變量

18.//創(chuàng)建一個(gè)容納上限為18的可變數(shù)字
   NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:18];

19.typedef NSUInteger NSStringEncoding;(NSString.h)

20.//輸出結(jié)果: "sss\nsss"
NSString *str1=@"sss.txt";
NSString *str= [str1 stringByDeletingPathExtension];//這個(gè)方法在NSPathUtilities.h中
NSLog(@"%@",str);//自動(dòng)換行
const char *s=str.UTF8String;//返回的是靜態(tài)char*字符指針,存在靜態(tài)/常量區(qū)
printf("%s",s);

21.UITableViewController用法

設(shè)置ViewController繼承自UITableViewController
刪除storyboard中原有的控制器
拖進(jìn)新控制器
設(shè)置新控制器class:ViewController
設(shè)置新控制器is initial
實(shí)現(xiàn)2個(gè)數(shù)據(jù)源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

22.// 懶加載
- (NSArray *)tgs
{
    if (!_tgs) {
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"tgs.plist" ofType:nil];
        NSArray *dicts = [NSArray arrayWithContentsOfFile:filePath];
        
        NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:dicts.count];
        for (NSDictionary *dict in dicts) {
            XMGTg *obj = [XMGTg tgWithDict:dict];
            [arrayM addObject:obj];
        }
        
        _tgs = [arrayM copy];
    }
    return _tgs;
}

23.有關(guān)@property(readonly)....A....在.h中寫著對(duì)外公開但只讀,而且在.m中不能用_A賦值,只生成get方法
    所以在.m中的類擴(kuò)展中可以再聲明一次A @property() ...A...就可以對(duì)外只有g(shù)et,對(duì)內(nèi)都有

24.引入Mansonry
//define this constant if you want to use Masonry without the 'mas_' prefix
#define MAS_SHORTHAND

//define this constant if you want to enable auto-boxing for default syntax
#define MAS_SHORTHAND_GLOBALS

#import "Masonry.h"

25.NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);

26.求NSString*對(duì)象的size(需要傳入U(xiǎn)IFont字典)
#1單行
// 先計(jì)算label內(nèi)文字的范圍size//
// sizeWithAttributes:內(nèi)部一般傳入字體大小即可(如果label內(nèi)的文字間距屬性修改過(guò)的話,還需要傳入文字間距)
CGSize nameSize = [self.status.name sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0]}];
#2多行
// 多行文字高度的計(jì)算,需要用到
//[self.status.text sizeWithFont:<#(UIFont *)#> constrainedToSize:<#(CGSize)#>];
#warning 求出text的bounds
 [self.text boundingRectWithSize:<#(CGSize)#> options:<#(NSStringDrawingOptions)#> attributes:<#(NSDictionary *)#> context:<#(NSStringDrawingContext *)#>]
// boundingRectWithSize:CGSize文字限制范圍(一般限制寬度)
// options:枚舉NSStringDrawingUsesLineFragmentOrigin
// attributes 傳入文字屬性@{}
CGSize textMaxSize = CGSizeMake(textW, CGFLOAT_MAX);
#define TextFont [UIFont systemFontOfSize:15.0]//自己寫的宏
#CGFLOAT_MAX//系統(tǒng)的,前面有
CGSize temp = [self.status.text boundingRectWithSize:textMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: TextFont} context:nil].size;

27.MJExtention用法
#一般

1.//        // 字典數(shù)組 -> 模型數(shù)組
  //        _tgs = [XMGTg objectArrayWithKeyValuesArray:dictArray];

2.//        _tgs = [XMGTg objectArrayWithFile:[[NSBundle mainBundle] pathForResource:@"tgs" ofType:@"plist"]];
3.//_tgs = [XMGTg objectArrayWithFilename:@"tgs.plist"];
#復(fù)雜,模型內(nèi)有模型
if (!_carGroups) {
    // 說(shuō)明MJCarGroup類中的cars數(shù)組懒闷,里面要存放MJCar模型
    [MJCarGroup setupObjectClassInArray:^NSDictionary *{
        return @{@"cars" : [MJCar class]};//return @{@"cars" : @"MJCar"};好像也可以
    }];
    _carGroups = [MJCarGroup objectArrayWithFilename:@"cars.plist"];
}
return _carGroups;

28.UITableView.h內(nèi)部的私有NSIndexPath分類
@interface NSIndexPath (UITableView)

+ (NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;

@property(nonatomic,readonly) NSInteger section;
@property(nonatomic,readonly) NSInteger row;
@end
29.#warning WeiBaoM 是一個(gè)模型數(shù)組1??,內(nèi)的對(duì)象都是id的,沒(méi)有點(diǎn)語(yǔ)法2??
// return self.WeiBaoM[indexPath.row].cellH;
return [self.WeiBaoM[indexPath.row] cellH];

30. // 5.配圖:寬高100,左邊與正文對(duì)齊,頂部距離正文距離為10
#warning 注意分情況
CGRect picture_Ima_frame = CGRectZero;
if (self.picture) {
    CGFloat pictureW = 100;
    CGFloat pictureH = 100;
    CGFloat pictureX = textX;
    CGFloat pictureY = margin + CGRectGetMaxY(text_Lab_frame);
    picture_Ima_frame = CGRectMake(pictureX, pictureY, pictureW, pictureH);
}
self.picture_Ima_frame = picture_Ima_frame;

31.自定義控件在storyboard中的使用:(和系統(tǒng)控件是一樣的)
自定義的控件也能在storyboard中拖出使用,先拖出父控件(系統(tǒng)定義的),然后改名字為自定義類名即可.
自定義控件在storyboard中的使用,相當(dāng)在storyboard中創(chuàng)建控件,調(diào)用.m.h/(或xib)方式(2中)的初始化方法(不調(diào)用整體布局方法,storyboard來(lái)布局)alloc,init/(initWithCoder,awakFromNib),只有.h.m文件但是又沒(méi)有初始化方法,也可以在storyboard中使用,(有父控件的初始化)/實(shí)現(xiàn)一個(gè)awakFromNib(在內(nèi)修改控件內(nèi)部屬性),則默認(rèn)掉用了父控件的initWithCoder/nib
//在storyboard中的在dequeue..中用的,不用注冊(cè),dequeue的第二層封裝會(huì)直接穿件storyboard中的
//(只有.h.m文件但是又沒(méi)有初始化方法,也可以在storyboard中使用,注冊(cè)無(wú)布局frame)

32.#pragma mark - 狀態(tài)欄顯示與否
//- (BOOL)prefersStatusBarHidden
//{
//    return YES;
//}

33.botton有四種屬性
disable highlight normol selected

34./**當(dāng)一個(gè)控件被添加到父控件中就會(huì)調(diào)用*/可用于自定義子控件等(UIView.h中的方法)&//旋轉(zhuǎn)圖片

-(void)didMoveToSuperview
{
    NSLog(@"%s",__func__);
    if (self.group.opened) {
        self.nameView.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);//旋轉(zhuǎn)圖片
#旋轉(zhuǎn)圖片  另外M_PI_2是系統(tǒng)宏定義在math.h中 M_PI_2 可記為 m(math).Pi.2
    }else{
        self.nameView.imageView.transform = CGAffineTransformMakeRotation(0);
    }
}
- (void)addSubview:(UIView *)view;
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;

- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;

- (void)didAddSubview:(UIView *)subview;
- (void)willRemoveSubview:(UIView *)subview;

- (void)willMoveToSuperview:(UIView *)newSuperview;
- (void)didMoveToSuperview;
- (void)willMoveToWindow:(UIWindow *)newWindow;
- (void)didMoveToWindow;

35.感覺(jué)各種出現(xiàn)的按鈕都被叫做action :
比如,向左滑動(dòng),實(shí)現(xiàn)commitedit..后,通過(guò)editActions ...編輯加入多少個(gè)按鈕,類環(huán)境.在editActions ...內(nèi)UITableViewRowAction 設(shè)置按鈕樣式
比如;UIAlertController *提示框中的UIAlertAction *也是設(shè)置按鈕樣式

36.JSON數(shù)據(jù)就是一堆的鍵值對(duì).一般寫在xxoo.json上
{
    "size" : "98x98",//逗號(hào)間隔
    "idiom" : [//value為數(shù)組
               {"watch":"98x98"},
               {"size": "98x98"}
               ],
    "info" : {//value為字典
         "version" : 1,
         "author" : "xcode"
         }
}

37.設(shè)置程序的圖標(biāo)和,啟動(dòng)圖片.只需要,按照一定的規(guī)矩命名圖片,并把它們放入images.x..文件夾就可以了
file:///Users/Ruojue/Movies/IOS2期/資料/day10/代碼/09-圖標(biāo)和啟動(dòng)圖片

38.pt(點(diǎn)) >= ps(像素)//不同屏幕一個(gè)點(diǎn)有不同的像素//點(diǎn)和英寸相關(guān)
 imageView.frame = CGRectMake(0, 0, 100, 100);//pt(點(diǎn))100x100個(gè)
像素圖片要有三張,用在不同的屏幕上
// home.png -> 100x100像素//這個(gè)現(xiàn)在已經(jīng)不做這個(gè)圖片了,太old了
// home@2x.png -> 200x200像素
// home@3x.png -> 300x300像素

// 非retina: 100x100像素//非視網(wǎng)膜
// retina: 200x200像素//視網(wǎng)膜
// plus: 300x300像素

39.alpha// alpha<=0.01,完全透明,可以穿透,可以穿透的意思是就像不存在一樣,可以點(diǎn)擊里面那層的按鈕等
     而且>=1,時(shí)XCode會(huì)調(diào)成半透明,用判段改成0.99就行

  設(shè)置父控件的hidden=yes,其子控件也會(huì)被隱藏
  設(shè)置父控件的ilpha==0.01,其子控件也會(huì)被影響 ,變得看不見(jiàn)
40.// 尺寸自適應(yīng):會(huì)自動(dòng)計(jì)算文字大小
[label sizeToFit];

41.三.函數(shù)介紹:

NSStringFromClass:根據(jù)一個(gè)類名生成一個(gè)類名字符串

NSClassFromString: 根據(jù)一個(gè)類名字符串生成一個(gè)類名

四.思想,為什么使用NSStringFromClass NSStringFromClass:輸入類名有提示,避免輸入錯(cuò)誤

42.// 1.確定重用標(biāo)示:
static NSString *ID = nil;
if (ID == nil) {
    ID = [NSString stringWithFormat:@"%@ID", NSStringFromClass(self)];
}
 1.static NSString *str=[NSStringFromClass(self.class) stringByAppendingString:@"ID"];//會(huì)報(bào)錯(cuò),要先定義一個(gè)static,然后拿引用去賦值
 2.static NSString *ID;
  ID=[NSStringFromClass(self.class) stringByAppendingString:@"ID"];//不報(bào)錯(cuò)

43. //設(shè)置滾動(dòng)區(qū)內(nèi)編劇
//這里設(shè)置完了,tableView會(huì)滾到相應(yīng)偏移位置,相當(dāng)于自己操作滾動(dòng),調(diào)用了那些滾動(dòng)代理方法
self.tableView.contentInset=UIEdgeInsetsMake(HeadViewH+TabBarH, 0, 0, 0);

44.
#warning  lable sizeToFit lable自適應(yīng)字體大小
[self.lable sizeToFit];
#warning 煩了一個(gè)錯(cuò),navigationBar,應(yīng)該由棧頂控制器的navigationItem屬性設(shè)置,而不是navigationController.navigationItem
//self.navigationController.navigationItem.titleView=self.lable;
self.navigationItem.titleView=self.lable;

45.
NSString *filePath =[tempPath stringByAppendingPathComponent:@"apl.plist"];
#warning  這兩句等價(jià)
NSString *filePath =[tempPath stringByAppendingString:@"/apl.plist"];
46.
#define FOUNDATION_EXPORT  FOUNDATION_EXTERN

#define FOUNDATION_EXTERN extern

//系統(tǒng)的NSObjCRuntime.h

47.當(dāng)自己的類,需要?jiǎng)e的類的數(shù)據(jù),或者要改別的類屬性時(shí),在自己的類,設(shè)一個(gè)容器,存放別的類,就可以拿到別的類,實(shí)現(xiàn)目的,這時(shí)為了降低耦合,用代理容器,存別的類,用協(xié)議方法,實(shí)現(xiàn)數(shù)據(jù)交互.(非MVC中的相關(guān)類)

48.M_PI 180度 // pi
M_PI_2 90// pi/2

這是弧度2PI r(周長(zhǎng))
弧度 2PI 360

placeholder 占位符

49.contantoffsize內(nèi)容偏移量以內(nèi)容原點(diǎn)為原點(diǎn),計(jì)算,可視范圍于內(nèi)容的原點(diǎn)相比差值
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宗弯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搂妻,老刑警劉巖蒙保,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異欲主,居然都是意外死亡邓厕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門扁瓢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)详恼,“玉大人,你說(shuō)我怎么就攤上這事引几∶粱ィ” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵伟桅,是天一觀的道長(zhǎng)硅堆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)贿讹,這世上最難降的妖魔是什么渐逃? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮民褂,結(jié)果婚禮上茄菊,老公的妹妹穿的比我還像新娘。我一直安慰自己赊堪,他們只是感情好面殖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哭廉,像睡著了一般脊僚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天辽幌,我揣著相機(jī)與錄音增淹,去河邊找鬼。 笑死乌企,一個(gè)胖子當(dāng)著我的面吹牛虑润,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播加酵,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼拳喻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了猪腕?” 一聲冷哼從身側(cè)響起冗澈,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陋葡,沒(méi)想到半個(gè)月后渗柿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脖岛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年朵栖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柴梆。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陨溅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绍在,到底是詐尸還是另有隱情门扇,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布偿渡,位于F島的核電站臼寄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏溜宽。R本人自食惡果不足惜吉拳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望适揉。 院中可真熱鬧留攒,春花似錦、人聲如沸嫉嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剪侮。三九已至拭宁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杰标。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工兵怯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人在旱。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像推掸,于是被迫代替她去往敵國(guó)和親桶蝎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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