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 ...