Symbol not found: _objc_retain
Thử đủ cách lượm lặt từ Google như:
- Add -fobjc-arc vào Other linker flags.
- Sử dụng -weak_library, -weak_framework.
- Tắt Implicit link to system library option
Live, Learn, Work And Share
public boolean isPowerOfTwo(int n){
if( 0 == n|| 1 == n ) return true;
int x = n / 2;
int y = n%2;
if (1 == y) return false;
return isPowerOfTwo(x);
}
Hoặc chúng ta không cần viết đệ qui như sau:
public boolean isPowerOfTwo(int n){
boolean ret;
if( 0 == n|| 1 == n ){
ret = false;
}else{
int x = n / 2;
int y = n%2;
while ( x > 0){
if (1 == y) {
ret = false;
break;
};
x = x / 2;
y = x%2;
}
ret = true;
}
return ret;
}
Sau đây là cách nhanh hơn sử dụng hàm logarit:
public boolean isPowerOfTwo(int n){
double logn2 = Math.log(n)/Math.log(2);
int logn2i = (int) (Math.floor(logn2));
if(logn2-logn2i==0)
return true;
else
return false;
}
Tuy nhiên nếu chúng ta để ý một chút chúng ta sẽ có cách kiểm tra nhanh nhất. Các số là luỹ thừa của 2 đều có 1 chữ số 1 trong biểu diễn nhị phân của chúng. Ví dụ số
public boolean isPowerOfTwo(int n){
return ((n!=0) && (n&(n-1))==0);
}
Thật ngắn gọn, đơn giản phải không các bạn!
<div style="width: 100%;height:500px;">Sau đây là một ví dụ:
<object data="http://www.example.com/visorFreemind.swf" height="100%" type="application/x-shockwave-flash" width="100%">
<param name="movie" value="http://www.example.com/visorFreemind.swf" />
<param name="quality" value="high" />
<param name="flashvars" value="initLoadFile=http://www.example.com/example.mm&openUrl=_self&startCollapsedToLevel=3&maxNodeWidth=200&mainNodeShape=elipse&justMap=false&defaultToolTipWordWrap=200&offsetX=middle&offsetY=middle&buttonsPos=top&min_alpha_buttons=20&max_alpha_buttons=100&scaleTooltips=false&bgcolor=0xF8FBFC" />
</object>
</div>
// character literals.
NSNumber *theLetterZ = @'Z'; // equivalent to [NSNumber numberWithChar:'Z']
// integral literals.
NSNumber *fortyTwo = @42; // equivalent to [NSNumber numberWithInt:42]
NSNumber *fortyTwoUnsigned = @42U; // equivalent to [NSNumber numberWithUnsignedInt:42U]
NSNumber *fortyTwoLong = @42L; // equivalent to [NSNumber numberWithLong:42L]
NSNumber *fortyTwoLongLong = @42LL; // equivalent to [NSNumber numberWithLongLong:42LL]
// floating point literals.
NSNumber *piFloat = @3.141592654F; // equivalent to [NSNumber numberWithFloat:3.141592654F]
NSNumber *piDouble = @3.1415926535; // equivalent to [NSNumber numberWithDouble:3.1415926535]
// BOOL literals.
NSNumber *yesNumber = @YES; // equivalent to [NSNumber numberWithBool:YES]
NSNumber *noNumber = @NO; // equivalent to [NSNumber numberWithBool:NO]
#ifdef __cplusplus
NSNumber *trueNumber = @true; // equivalent to [NSNumber numberWithBool:(BOOL)true]
NSNumber *falseNumber = @false; // equivalent to [NSNumber numberWithBool:(BOOL)false]
#endif
Lưu ý:
NSMutableArray *array = ...;
NSUInteger idx = ...;
id newObject = ...;
id oldObject = array[idx];
array[idx] = newObject; // replace oldObject with newObject
NSMutableDictionary *dictionary = ...;
NSString *key = ...;
oldObject = dictionary[key];
dictionary[key] = newObject; // replace oldObject with newObject
- (void) viewWillAppear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillDisappear:animated];
}