Posted – 9月 16th, 2011
under ライブラリ
コメントは受け付けていません。
 
– go to post

ZipArchiveライブラリの使い方

●ダウンロード:

http://code.google.com/p/ziparchive/

●必要ライブラリ
libz.1.2.3.dylib

●圧縮

#import "ZipArchive/ZipArchive.h"

BOOL ret = [zip CreateZipFile2:@"/path/to/taarget.zip"];
// または
BOOL ret = [zip CreateZipFile2:@"/path/to/taarget.zip" Password:@"your password"];
// パスワードが空なら、上のコードと同じ動き

ret = [zip addFileToZip:@"/path/to/taarget.zip" newname:@"photo.jpg"];
if(![zip CloseZipFile2]) {
  // エラー処理
}
[zip release];




●解凍
ZipArchive* za = [[ZipArchive alloc] init];

if([za UnzipOpenFile:@"/path/to/taarget.zip"])
// または
if([za UnzipOpenFile:@"/path/to/taarget.zip"] Password:@"password of the zip fil
e"])
// パスワードが空なら、上のコードと同じ動き
{
  BOOL ret = [za UnzipFileTo:@"/path/to/dir" overWrite:YES];
  if(NO == ret) {
    // エラー処理
  }
  [za UnzipCloseFile];
}

[za release];



Posted – 8月 4th, 2011
under ローカライズ
コメントは受け付けていません。
 
– go to post

ローカライズの方法 xcode4

1.ローカライズする箇所のコードは以下の様にしてコーディングしていく。
  コーディングが終了したら、一気に2から次を行う。

NSString *titleString = NSLocalizedString(@"SettingTabItemTitle", @"Title of Setting Tab Item");



2.
プロジェクトディレクトリにCDして、
genstrings -a $(find . -name "*.m")



3.
Localizable.stringsファイルが出来るので、
プロジェクトへD/Dして登録

4.
選択すると文字化けしているので、
ファイルインスペクターのTextSettingでUTF-16にしました。
※UTF-8というブログもあるけど…

5.
同じくファイルインスペクター上で、Localizationの「+」ボタンを押して、
EnglishとかJapaneseを追加する。


参考URL:http://d.hatena.ne.jp/paraches/20110416


Posted – 6月 16th, 2011
under TwitterAPI
コメントは受け付けていません。
 
– go to post

TwitterAPI タイムラインのレスポンスキー

home_timeline

text,
“retweet_count”, ->NSCFString
id, ->NSCFNumber
truncated, ->NSCFBoolean
favorited, ->NSCFBoolean
retweeted, ->NSCFString
“created_at”, ->NSDate
user, ->NSCFDictionary
source, ->NSCFString
“source_api_request_type” ->NSCFNumber



user :{
“contributors_enabled” = false;
“created_at” = “Mon Oct 08 03:34:37 +0000 2007″;
“default_profile” = false;
“default_profile_image” = false;
description = “\U30d5\U30ea\U30fc\U30e9\U30f3\U30b9\U3067\U3001PC\U30fb\U30e2\U30d0\U30a4\U30eb\U306eFlash\U30b3\U30f3\U30c6\U30f3\U30c4\U3084\U30b2\U30fc\U30e0\U3092\U4f5c\U3063\U3066\U3044\U307e\U3059\U3002\U6df1\U591c\U306b\U9577\U6587\U3092\U66f8\U304d\U307e\U3059\U3002\U656c\U8a9e\U306f\U30d6\U30ec\U307e\U3059\U3002″;
“favourites_count” = 4;
“follow_request_sent” = false;
“followers_count” = 2866;
following = true;
“friends_count” = 2216;
“geo_enabled” = false;
id = 9302692;
“is_translator” = false;
lang = ja;
“listed_count” = 371;
location = “\U6771\U4eac\U90fd\U54c1\U5ddd\U533a”;
name = “\U5c3e\U91ce\Uff08\U3057\U3063\U307d\Uff09″;
notifications = false;
“profile_background_color” = edd2a5;
“profile_background_image_url” = “http://a0.twimg.com/profile_background_images/1441312/bg.png”;
“profile_background_tile” = false;
“profile_image_url” = “http://a0.twimg.com/profile_images/984928218/icon_normal.png”;
“profile_link_color” = B00000;
“profile_sidebar_border_color” = 9F6920;
“profile_sidebar_fill_color” = F4E2CA;
“profile_text_color” = 333333;
“profile_use_background_image” = true;
protected = 0;
“screen_name” = “tail_y”;
“show_all_inline_media” = false;
“statuses_count” = 14975;
“time_zone” = Tokyo;
url = “http://sipo.jp/”;
“utc_offset” = 32400;
verified = false;


Posted – 6月 2nd, 2011
under KVC
コメントは受け付けていません。

KVC

 
– go to post

KeyValueCodingの事、わかってたとおもってたけど、
こんな事も出来るのだ。

[ buttonA setValue:@"A" forKey:@"key" ];
[ buttonB setValue:@"B" forKey:@"key" ];



ボタンが押されたとき、どっちのボタンかを調べるのに使える。
今まで、tagだけでやってたなぁ…。


あと、上のボタンが同じViewにaddSubViewされてたとしたら、
なんと!
UIButton *button = (UIButton *)[contentView.subviews valueForKeyPath:@"buttonName.A"];



として、buttonAのインスタンスが取得出来ると!
がーん。


Posted – 5月 1st, 2011
under 開発
コメントは受け付けていません。
 
– go to post

ベッドで、足にMacbookProを載せて使っていたら、
すっごい熱い。

びっくりして、シャットダウン。
これは、初期不良?もしかしたら、ファンが壊れた?とか思って調べたら、皆さん同じことを書かれていますね。

とりあえず、足の上におかないで、風通しよくして使ってみる。

ーー
調べてみたら、iStatProというガジェットがあったので、
採用。

あと、FANの回転数やしきい値を変更できるFreeのソフトがあったので、インストールしてみる。

Fan Control
http://www.lobotomo.com/products/FanControl/index.html

uninstall方法も、ブログに書かれていたけど、
一応メモしておく。



Uninstall Instructions
Please follow these instructions to uninstall FanControl permanently:
Remove the following files and folders (both on your start disk):

/Library/StartupItems/FanControlDaemon
/Library/PreferencePanes/Fan Control.prefPane

(You will be prompted for the Administrator’s password when deleting these items.)
Reboot
Reset the System Management Controller (SMC). Please follow these links for instructions: Portables, Mac Mini, Mac Pro



Posted – 4月 25th, 2011
under CoreGraphics, UIImage
コメントは受け付けていません。
 
– go to post

する事は、やった事あったのですが、
その通りにやっても、うまくいかない。。

ググって、載ってたので、そのメソッドをメモ

- (CGImageRef)CGImageRotatedByAngle:(CGImageRef)imgRef angle:(CGFloat)angle
{
    CGFloat angleInRadians = angle * (M_PI / 180);
    CGFloat width = CGImageGetWidth(imgRef);
    CGFloat height = CGImageGetHeight(imgRef);
    
    CGRect imgRect = CGRectMake(0, 0, width, height);
    CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
    CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bmContext = CGBitmapContextCreate(NULL,
                                                   rotatedRect.size.width,
                                                   rotatedRect.size.height,
                                                   8,
                                                   0,
                                                   colorSpace,
                                                   kCGImageAlphaPremultipliedFirst);
    CGContextSetInterpolationQuality(bmContext, kCGInterpolationNone);
    CGColorSpaceRelease(colorSpace);
    CGContextTranslateCTM(bmContext,
                          +(rotatedRect.size.width/2),
                          +(rotatedRect.size.height/2));
    CGContextRotateCTM(bmContext, angleInRadians);
    CGContextTranslateCTM(bmContext,
                          -(rotatedRect.size.height/2),
                          -(rotatedRect.size.width/2));
    CGContextDrawImage(bmContext, CGRectMake(0, 0,
                                             rotatedRect.size.height,
                                             rotatedRect.size.width),
                       imgRef);
    
    CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext);
    CFRelease(bmContext);
    [(id)rotatedImage autorelease];
    
    return rotatedImage;
}


Posted – 4月 21st, 2011
under UIImagePickerController
コメントは受け付けていません。
 
– go to post

BOOL b = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];


Posted – 4月 18th, 2011
under UIViewController
コメントは受け付けていません。
 
– go to post

- (void)_init
{
  // 初期化処理
}

- (id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)bundle
{
  self = [super initWithNibName:nibName bundle:bundle];
  if (!self)
  {
    return nil;
  }

  // 共通の初期化メソッド
  [self _init];

  return self;
}

- (id) initWithCoder:(NSCoder*)coder
{
  self = [super initWithCoder:coder];
  if (!self)
    return nil;

  // 共通の初期化
  [self _init];

  return self;
}



nibファイルを使用する場合
-  (id) init
{
  self = [super initWithNibName:@"hogehoge" bundle:nil];
  if (!self)
    return nil;

  // 共通のメソッド
  [self _init];

  return self;
}


Posted – 4月 10th, 2011
under UIViewController
コメントは受け付けていません。
 
– go to post

する時のサンプル。



viewWillAppearとviewDidAppearを
直接呼んでいるところに注目。

あと、viewControllerのインスタンスをメンバー変数として、
保持するよーにする。
なぜなら、このコントローラのライフサイクルも、
管理する必要があるから。



- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 手動でviewControllerのviewを張る場合は、
    // このvcをインスタンスをメンバー変数に入れるよーにしておく
    vc = [[A alloc] initWithNibName:nil bundle:nil];
    
    CGRect rect;
    rect = self.view.bounds;
    vc.view.frame = rect;
    
    [self.view addSubview:vc.view];
    
    // ここでviewWillApperとviewDidAppearを直接呼ぶ
    [vc viewWillAppear:NO];
    [vc viewDidAppear:NO];
}


Posted – 4月 10th, 2011
under UIViewController
コメントは受け付けていません。
 
– go to post

didRecieveMemoryWarningが呼ばれる時、
viewにnilが入れられる。

viewがなくなる。

この後、viewDidUnloadメソッドが呼ばれる。
●nibファイルの読み込みで作成されたビューインスタンスの後片付け。

viewには、すでにnilが指定されているが、
後片付けとは?
答えは、InterfaceBuilderで指定されたアウトレットの片付け

ーーー
アウトレットを解放するためのメソッドを実装

- (void) _releaseOutlets
{
  //アウトレットを解放する
  [_tableview release]; _tableview = nil;
  [_feedItem release]; _feedItem = nil;
}




このメソッドは、viewDidUnloadとdeallocメソッドで呼び出す。
- (void) viewDidUnload
{
  // アウトレットを解放する
  [self _releaseOutlets];
}

- (void) dealloc
{
  // アウトレットを解放する
  [self _releaseOutlets];

  // その他のインスタンスを解放する

  // 親クラスの解放
  [super dealloc];
}




=======
viewDidUnloadでは、ビューコントローラが本当に必要とするメンバー変数は、
解放しないようにする。

viewDidUnloadが行われた後、再びviewDidloadが呼ばれる。
この時、nibファイルも再ロードされる。
この時に、復元出来るもののみ、viewDidUnload内で解放するようにする。