• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
 
 

WWDC 10のビデオを見ているんですが、メモ。

Session 116 - Model-View-Controller for iPhone OS
https://deimos.apple.com/WebObjects/Core.woa/BrowsePrivately/adc.apple.com.4092349126.04109539109.4144345609?i=1812791157

Session116で出てきた、Object間でのやり取りの方法として3つ

  • Target - Action
  • Delegate
  • Notification

特に気になったのが後者の二つの違い。 下記Referenceによると、

  • Notification受信はいくつものObjectが受信することができる。対して、Delegateはdelegation objectのみ。また、Notificationは戻り値がない。
  • Notification受信側は、あらゆるmessageを受信することができるのに対し、Delegateは前もって宣言されたmethodsのみ。
  • Notification発信側は、受信者がいるかどうかは関知していない

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Notifications/Articles/Notifications.html#//apple_ref/doc/uid/20000215-73929

Session116では、NotificationはBroadcast channelsと記述されていました。わかりやすい表現。

posted by Png satoko on Fri 25 Jun 2010 at 22:15

あるアプリでは「Target terminated too early to collect data」というエラーが出てLeaksを使ってのメモリ使用状況を見ることができないのに、別のアプリだとそのような状況は起きず困っていたのですが、解決したのでメモしておきます。

@k_katsumiさんからは下記のadhocでget-task-allowの値が問題かもというのと、オーガナイザで実機を再認識するのが良いというのをアドバイスを頂いたのですが、残念ながら解決しませんでした...

実機デバッグでの注意点
http://numata.designed.jp/ja/2009/03/iphone-5.html

実機でInstrumentsが使えなくなったときの対処法
http://d.hatena.ne.jp/iphone_dev/20080825/1219649967

それで、色々調べてまわったのですが、よい方法が見つからず困っていたところ

You are not running the application through Xcode when you do this. Start the application manually, then bring up Instruments and connect to your device.
http://stackoverflow.com/questions/2032834/memory-footprint-of-an-app-on-iphone

というコメントでした。この中ではActivity Monitorについての話だったのですが、Leaksも同じかも!と思ってぐぐったらありました!

Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial
http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/

上記の方法だと、xCodeは関係なく、iPhoneとInstrumentsでメモリ使用状況を見ることができます。yay! 多少、ステップが増えるのですが、出来ないよりは全然マシ!ということでよしとします。 (もしかしたら、同じapp名?のリリース版(購入したapp)とデバッグしようとしているappの二つあるのが原因なのかもですが...)

posted by Png satoko on Mon 15 Mar 2010 at 08:24

下記の続きです。

iPhone, Mac, ISO-2022-JP, 〜, 全角チルダとか波ダッシュについてのメモ
http://blog.s21g.com/articles/1693

あと、この記事も関係するかも:[iPhone] メール送信アプリでのツボ

結局何が書きたかったかというと、

「全角チルダ」がdataUsingEncoding:NSISO2022JPStringEncodingで「?」に置き換えられるので、何らかの回避策を探そう!…探しました!

という報告です。

〜の入力方法二つ

以前に書いた記事で、Macでは全角チルダと波ダッシュは同じに見えるらしいことがわかりましたが、iPhoneでも同様のようです。 で、日本語キーボードで「〜」を入力する方法は二通りあります:

  1. あいうキーボードで、わの所を右にフリック、次候補中にある〜を選択
    → 全角チルダ

  2. 数字キーボードで、0の所を左にフリック
    → 波ダッシュ

dataUsingEncoding:NSISO2022JPStringEncodingで波ダッシュだと?にされない、〜のまま

全角チルダ(〜) → ?
波ダッシュ(〜) → 〜

という風に置換されることがわかりました。

大方のユーザにとっては全角チルダを波ダッシュに変換しても問題がなさそうなので、アプリ内では下記のように変換することにしました。

   1  	unichar wave_dash_char = 0x301C;
   2  	unichar fullwidth_tilde_char = 0xFF5E;	
   3  	NSString *wave_dash = [NSString stringWithFormat:@"%C", wave_dash_char];
   4  	NSString *fullwidth_tilde = [NSString stringWithFormat:@"%C", fullwidth_tilde_char];
   5  
   6  	NSString *replacedStr = [str stringByReplacingOccurrencesOfString:fullwidth_tilde withString:wave_dash];

またポンドとセントでも同じような状況が発生するので、同様の処理を行うようにしました。

   1  	unichar pond_char = 0x00A3;
   2  	unichar cent_char = 0x00A2; 
   3  	unichar pond_char2 = 0xFFE1; //?になるポンド
   4  	unichar cent_char2 = 0xFFE0; //?になるセント

posted by Png satoko on Wed 10 Feb 2010 at 07:18

備忘録。ezPhotoMail、地味にバージョンアップしているのですが、Verion Numberではまってしまいました。

@takayamaさんや@sumihiroさんに有益なアドバイス頂きました。感謝!

バージョンは1桁ずつ「.」で区切るのが吉:1.5.5

1.5.5

じゃないかという@sumihiroさんのアドバイス。1.55とかにすると、1.6に上げようとすると、「前のバージョンより高いバージョンをNSBundleに記述してください」という旨のエラーメッセージが出てしまうのです。

または、下記のように60と0を足すのも多分大丈夫じゃないかという@takayamaさんのアドバイス。確かに運用で「下位桁は必ず二桁で」などとするのもいいかもしれません。

1.60

1.5.5aなどの変則バージョンもOK

1.5.5aを公開しておいて、その後1.5.5bというのも可能だそうで、このパターン、@takayamaさんは実際に使われたことがあるそうです。

1.5.5a -> 1.5.5b

というわけで、次のezPhotoMailのバージョンは1.6にしたかったのですが、混乱してしまったので1.56で申請しています…

posted by Png satoko on Mon 8 Feb 2010 at 08:12

subviewはsuperviewのalphaを引き継いでしまう。たぶん。親のalphaが0.7で子が0.5の場合は0.7*0.5で子は0.35のalphaになる? 背景スケスケでコンテンツはクッキリ表示したい場合はどうすればいいか?と言うと、もう一つalpha 1.0のUIViewを用意し、そのviewをsuperviewにして子にaplha 0.7のbackground viewとalpha 1.0のcontens viewを加えればいい。

つまり最初のviewの構成が

   1  UIView alpha 0.7
   2   UIView alpha 1.0 contens view
となっているところを
   1  UIView alpha 1.0
   2   UIView alpha 0.7 background view
   3   UIView alpha 1.0 contents view
とする。

解決法がタイトルは嘘にしてしまったが、やりたい事はコレで実現できる。もちろんbackgournd viewを本来のあるべきサイズにしなきゃいけないけどね。

posted by Png bopper on Sat 6 Feb 2010 at 20:05

at iPhoneOS 3.1.2

shouldAutorotateToInterfaceOrientationじゃなくて任意のタイミングで roateする方法を探していたんだけど、見かけるのはUIViewのtransformでrotateすることばかり。確かめてないけど。この方法だとUIViewControllerのinterfaceOrientationと齟齬も発生するじゃないかと思う。

それで無理くり何とかする方法を考案した。けど、この方法では(もう少し改善すればできるかもしれないが)重力方向への回転しかできない。 shouldAutorotateToInterfaceOrientation:を使ってrotateすのはいつもとどおり。だけど先に方向を決めておいてNSNotificationを投げて強制的にshouldAutorotateToInterfaceOrientation:を発生させることによって 任意のタイミングでviewを回転させる事ができる。

   1  - (void)rotateNow{
   2    UIDevice *device = [UIDevice currentDevice];
   3    self.toRotate = device.orientation;
   4    NSNotification *notification = [NSNotification notificationWithName:@"UIDeviceOrientationDidChangeNotification" object:device];
   5    [[NSNotificationCenter defaultCenter] postNotification:notification];
   6  }
   7  
   8  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
   9    if(self.toRotate){
  10      return interfaceOrient == self.toRotate;
  11    }else{
  12      return NO;
  13    }
  14  }

こんな感じ。何をしたかったかと言うと向きが変わったときにいきなり回転させるんじゃなくて、ちょっとボタンをだして確認を取りたかった。だからタイミングだけずらして回転方向は重力方向だけでいいやって話しなんだけど。

もしかすると、このNSNotificationを作ってる部分でobject:deviceってUIDeviceを渡してる部分。このオブジェクトのプロパティorientationを任意の方向を返す様なオブジェクトを作ってViewControllerを更に騙すことができるならば、タイミングだけじゃなくて方向も変えれるんじゃないかな?そこまでは確認を取ってません。

まぁ何にせよ。かなりhackな方法だからOSのバージョン上がったら使えなくなるかもしれない。

posted by Png bopper on Sun 31 Jan 2010 at 14:02

ABMultiValueCopyValueAtIndexの二つ目にいつもidentfierを渡したんですが、バグてました。メモメモ。
ABMultiValueGetIndexForIdentifierでidentifierをindexに直してやる必要があります。

   1  - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
   2  
   3    CFTypeRef list;
   4    CFIndex index;
   5    CFStringRef email;
   6  
   7    list = ABRecordCopyValue(person, property);
   8    index = ABMultiValueGetIndexForIdentifier(list,  identifier);
   9    email = ABMultiValueCopyValueAtIndex(list, index);
  10    (中略)
  11  
  12    CFRelease(email);
  13    CFRelease(list);
via http://stackoverflow.com/questions/1875135/get-email-address-from-iphone-address-book

posted by Png satoko on Fri 22 Jan 2010 at 16:14

もう何日も悩んだので、メモしておきます。
読み方から勉強しましたです。

MacとWindowsで見え方が異なる

「~」と「〜」。同じに見えるだろうか。Macからは同じに見えるが、Windowsからは違って見えるかもしれない。前者のは全角チルダ、後者は波ダッシュ、Unicodeでは異なる文字として扱われている。

Macの"Mail" 「波ダッシュ」への対応(その1 背景)
http://toshiohattori.blogspot.com/2009/10/macmail-1.html

その他の参考:その他の「Macの"Mail" 「波ダッシュ」への対応」
その2
その3
その4

wikipedia 全角チルダの項

Unicodeは下記:

0x301C 波ダッシュ wave dash
0xFF5E 全角チルダ fullwidth tilde

via http://ja.wikipedia.org/wiki/%E3%83%81%E3%83%AB%E3%83%80#.E5.85.A8.E8.A7.92.E3.83.81.E3.83.AB.E3.83.80

10進、16進、HTML内での表記

波ダッシュ「〜」
〜 (10進表記)
〜 (16進表記)

全角チルダ「~」
~ (10進表記)
~ (16進表記)

via http://blog.magical-remix.net/cssclips/archives/86

Unicode版 文字コード表

http://www.m-hoz.com/jsp/unicode.jsp?Bgn=0&End=65536

文字コード:ISO-2022-JP

charset=ISO-2022-JP
半角カナを除くJISコードの日本語文字セット
実際には、半角カナが入っている場合もある
http://ash.jp/code/code.htm

RubyでUnicodeから文字を得る方法

   1  [0x3000].pack("U")
via http://blog.s21g.com/articles/1454

posted by Png satoko on Fri 22 Jan 2010 at 08:58

メモメモ。

答えはFAQにあります:

iTunes Connect:Frequently Asked Questions > Manage Your Applications
What happens if I want to start selling an application I removed from sale again? Can I make it live in the App Store again?
https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/4.0.0.5.1.7.1.1.1.1

ざっくり訳すと:

  1. アプリの「Edit Imformation」ボタンを押す
  2. 「Pricing」タブを表示(どのApp Storeも選択されていない状態)
  3. 販売したいApp Storeを選択する
  4. 「Save Changes」ボタンを押す
posted by Png satoko on Fri 15 Jan 2010 at 07:22

メール送信時、長い件名の場合は複数行に分割する

RFC2047によれば、「76文字以内で」複数行に分割すべき
http://www.securehtml.jp/utf-8/long_subject.html

全然知らなかったのですが、分割する必要があるそうです。

全角チルダ(〜)などはdataUsingEncoding:NSISO2022JPStringEncodingで変換できない

NSStringの下記の関数を使って、ISO-2202-JPの文字列を作るのですが、全角チルダ(〜)などがあるとnilが返ってきてしまいます:

  • (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

そういう場合はallowLossyConversion:YESにして、該当の文字を「?」で置き換える必要があります:

  • (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag

その他

色々調べている間に便利そうだったサイト。メモメモ。

Convert NSData to NSString or vise versa:
http://homepage.mac.com/mnishikata/objective-c_memo/convert_nsdata_to_nsstring_.html

特殊記号の読み方:
http://www1.odn.ne.jp/haru/data-list/mark.html

Unicode版 文字コード表:
http://www.m-hoz.com/jsp/unicode.jsp?Bgn=0&End=65536

NSString encoding problem with extended characters ( AKA : converting NSString to std::string)
http://lists.apple.com/archives/Syncservices-dev/2007/Mar/msg00020.html

[Perl]Perlで日本語(ISO-2022-JP)メールを送信(まとめ):
http://d.hatena.ne.jp/kopug/20060903

posted by Png satoko on Mon 26 Oct 2009 at 06:02
Contents
[iPhone] WWDC 2010 Session 116 - Model-View-Controller for iPhone OS メモ:NotificationとDelegationの違い
[iPhone] xCodeからLeaksを立ち上げると「Target terminated too early to collect data」というエラーが出る件、解決
[iPhone] ISO-2202-JP文字列作成での全角チルダなどの扱いについて
iTC Upload Application内のVersion Numberについてのメモ:1.5.5と1.55
親のUIViewのalphaを無視して表示する方法。
UIViewControllerだけで強制的にrotateする方法。
[iPhone] ABPeoplePickerNavigationController、アドレス帳からEmailを取得する
iPhone, Mac, ISO-2022-JP, 〜, 全角チルダとか波ダッシュについてのメモ
[iPhone]「Remove From Sale」したアプリの販売を再開するには
[iPhone] メール送信アプリでのツボ
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
KingofSmack: Here also good reads for this mobile applicatio... '14-5
Spencer: You don't have to re-compile it, this version w... '14-4
staiano: Any chance we can get a recompile for 10.9? '14-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ