程式設計技巧 4

2021-07-05 05:28:57 字數 2769 閱讀 6151

26: 私有擴充套件 +  巢狀:

外露的兩個方法介面:

#import #import @inte***ce jsmessagesoundeffect : nsobject

+ (void)playmessagereceivedsound;

+ (void)playmessagesentsound;

@end

用私有擴充套件「保護」的乙個私有方法,並且你發現這樣的巢狀會順帶保護它們的封裝性:

#import "jsmessagesoundeffect.h"

@inte***ce jsmessagesoundeffect ()

//私有擴充套件,就是不想這個方法暴露,並且下面兩個賦參的方法也是私有,安全的

+ (void)playsoundwithname:(nsstring *)name type:(nsstring *)type;

@end

@implementation jsmessagesoundeffect

+ (void)playsoundwithname:(nsstring *)name type:(nsstring *)type

else

}+ (void)playmessagereceivedsound

+ (void)playmessagesentsound

@end

27: 更簡潔地取寬高

cgsize size = self.view.frame.size;

cgrect tableframe = cgrectmake(0.0f, 40.0f, size.width, size.height - 40 - input_height);

比你直接來兩個 width 和 height 強得多啦。

28.取各種尺寸

/**

@brief frame 左上角x view.frame.origin.x

*/#define view_tlx(view) (view.frame.origin.x)

/** @brief view frame 左上角y view.frame.origin.y

*/#define view_tly(view) (view.frame.origin.y)

/** @brief view frame 右下角x

*/#define view_brx(view) (view.frame.origin.x + view.frame.size.width)

/** @brief view frame 右下角y

*/#define view_bry(view) (view.frame.origin.y + view.frame.size.height)

/** @brief view frame width

*/#define view_w(view) (view.bounds.size.width)

/** @brief view frame height

*/#define view_h(view) (view.bounds.size.height)

/** @brief cgrect 左上角x

*/#define frame_tlx(frame) (frame.origin.x)

/** @brief cgrect 左上角y

*/#define frame_tly(frame) (frame.origin.y)

/** @brief cgrect width

*/#define frame_w(frame) (((frame).size).width)

/** @brief cgrect height

*/#define frame_h(frame) (((frame).size).height)

分清楚frame 和 bounds的區別就可以明白  左上右上 的原理了。

29.優雅取消計時器

if (_scrolltimer != nil)

30.取消鍵盤乙個巧做法:

@property (nonatomic, strong) id currenttextfield;  //關閉鍵盤

**方法設定同一物件:

#pragma mark - uitextfielddelegate

- (void)textfielddidbeginediting:(uitextfield *)textfield

在適當位置關閉鍵盤:

[_currenttextfield resignfirstresponder];//適當地方

31.盡量優雅地縮短你的**!例如直接地判斷返回布林值!

self.input*******view.sendbutton.enabled = ([textview.text trimwhitespace].length > 0);

32.盡量貼近蘋果公司的處理方法,無所不用其技

貼乙個button的set方法,實現思想和底層的先release再retain非常非常相像:

#pragma mark - setters

- (void)setsendbutton:(uibutton *)btn

R語言基礎程式設計技巧彙編 4

是求餘 是整除xdplot x,d,type l 包中的k ronecker 函式可以計算 abpaste a,b,sep 1 ac bd 現在回歸方程如下 y a b x lm y i 1 x r 命令裡帶表示式,需要用 i library idpmisc 極座標轉成直角座標 xy 直角座標轉成極...

程式設計技巧 適配技巧 2

上篇講了一些對尺寸的簡單適配 縮放適配 我們這裡來講一些對於需求而言的 適配 1.案例一 如果版本一需要四行檢視,版本二需要二行檢視,怎麼用最少的 和邏輯判斷去實現?這裡可以用到uiview的tag property nonatomic nsinteger tag default is 0 null...

ACCESS程式設計技巧

問題 dq 地區 xm 姓名 a 張三 a 李四 b 王五 b 王六 b 王七 c 王九 想做乙個檢視轉換成 dq xm a 張三,李四 b 王五,王六,王七 c 王九 解決在access模組裡寫函式 基本程式如下 public function return sl dq as string as ...