• 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
 

プリプロセッサ マクロとかコンパイラ フラグとか苦手です。
a-haがあったのでメモ。

compiler flag編:-DNS_BLOCK_ASSERTIONS=1

NSAssertをリリースビルド時に無効して、そのフラグでNSLogも無効にしてしまおうという技です。2009年の記事ですが、参考に:

2009-12-03NSLogとNSAssertをリリース時に無効化する
http://iphone-dev.g.hatena.ne.jp/tokorom/20091203

Xcode 4.5ではこんな感じに設定してみました: NS_BLOCK_ASSERTIONS_compiler flags.png

preprocessing編:DNS_BLOCK_ASSERTIONS

動作的には上と同じ事なのですが、別の書き方。こっちのが文字数少ない分好きです。

Working with Assertions to Debug your Apps Posted on June 27, 2011
http://mobiledevelopertips.com/debugging/working-with-assertions.html

Xcode 4.5ではこんな感じに設定してみました: NS_BLOCK_ASSERTIONS_preprocessing.png

ちなみに:

What's the “DNS_BLOCK_ASSERTIONS” (C compiler flag)?
http://stackoverflow.com/questions/2752574/whats-the-dns-block-assertions-c-compiler-flag

Just to clarify, -D defines a constant, and it is one of the confusing flags that doesn't have a space between it and it's parameter

日本語だとここもヒントになりました:

Xcodeでのプリプロセッサ定義
http://romly.com/archives/2009/10/define_by_project_setting.html

posted by Png satoko on Tue 18 Sep 2012 at 15:19

まだGDB初心者です。
忘れてしまったのでちゃんと書いておきます。

   1  print (CGRect) [myView frame]  
   2  print (CGSize) [myView frame].size  
   3  print (CGFloat) [myView frame].size.width  

出典元:

GDB and Displaying Property values
http://www.iphonedevsdk.com/forum/iphone-sdk-development/37083-gdb-displaying-property-values.html

  • メソッド?として呼んでやる
  • CGRectにキャストする

というのがポイントなんですね。
ちなみにprintの代わりに、pでも下記でもOKです:

   1  p (CGRect)[view frame]

  • p:print
  • po:print object

これでおしまい

posted by Png satoko on Wed 15 Feb 2012 at 14:10

といっても、ほぼ全部二つのサイトの記事なんですが、いつもゴソゴソ探すのでまとめることにしました。

※ 要QuartzCore.framework

Animating Interfaces with Core Animation: Part 1

惑星が軌道にそって動く+衛星がその周りを回るアプリ

http://nachbaur.com/blog/core-animation-part-1

Animating Interfaces with Core Animation: Part 2

雲が左から右に流れていくアプリ

http://nachbaur.com/blog/core-animation-part-2

Animating Interfaces with Core Animation: Part 3

押すとボタンがぶるんと震える(拡大して縮小する)アプリ

http://nachbaur.com/blog/core-animation-part-3

Animating Interfaces with Core Animation: Part 4

軌跡にそって車を動かすアプリ

http://nachbaur.com/blog/core-animation-part-4

Core Animation: Paths

軌道に沿って惑星が周り、さらにその軌道字体が3次元で回転するアプリ
(※Macアプリ)

http://watchingapple.com/2008/04/core-animation-paths/

Core Animation: 3D Perspective

床と壁で3次元ぽく見せるアプリ
(※Macアプリ)

http://watchingapple.com/2008/04/core-animation-3d-perspective/

Core Animation: Creating a Jack-in-the-box with CAKeyframeAnimation

びっくり箱、Jack in the boxアプリ
(※Macアプリ)

http://watchingapple.com/2008/04/core-animation-creating-a-jack-in-the-box-with-cakeyframeanimation/

iPhone / iPad アプリのアニメーションをなめらかにするためのポイント3つ

アニメーションのパフォーマンス チューニングについてのポイント

http://blog.fenrir-inc.com/jp/2011/10/ios-animation-tuning.html

posted by Png satoko on Fri 10 Feb 2012 at 15:04

new BSDライセンスがついているものをアプリに組み込みたいなと思いましたので改めて調べてみました。
結論から言うと、

  1. EULAにLicense文書をそのまま入れる
  2. アプリ内にLicense文書を表示するwebViewを作る:設定やAboutなどで

の2つをするがベストな感じです。

[参考1] @takuma104さんのブログ

NatsuLion for iPhone クローン (略) から学んだこととかまとめ - @takuma104 log http://d.hatena.ne.jp/takuma104/20090329/1238329981

具体的には、

AppStore で配布する際の iPhone アプリで、New BSD License のコード等を使用する場合の適切な方法は、僕の考える限り、以下ぐらいの手法ではないかと思います。

  1. EULA に License 文書をそのまま入れる
  2. アプリのどこか、たとえば「設定」や「このアプリについて」とかに、License 文書を全文表示できるような仕組みを作る (webViewっぽいViewで組み入れているものも見かけますね)
  3. AppStore からリンクされているサポートページが事実上ドキュメントなので、そこに License 全文記載されているページへリンクする

[参考2] 他のiPhone開発者の方々に聞いてみました

Twitterで聞いてみたところ、@azu_reさんが

@azu_re : @satoko 自分はアプリの設定あたりに"このアプリについて"みたいな感じのWebView作って、ライセンス文流し込みました
http://twitter.com/azu_re/status/132288479706095616

というtwtを下さいました。他にも実際にこういう手法を取っていらっしゃる開発者の方は何人かいらっしゃるようでした。

[参考3] Instagramアプリでの表示例

ちなみに、Instagramアプリでは、Profileタブをタップ、右上Aboutをタップ、Libraries項をタップすると下記のように表示されます:
(なぜかとても見づらい状態で表示されていますがw)

licences.PNG

[おまけ] EULAって何?

BSDライセンス絡みメモ:EULA ってなんですか? « 寺子屋サルでき旧館 | iPhoneアプリ開発をもっともっと楽しく!困ったらみんなで解決!
http://sarudeki.maiway.jp/forum/topic/37

Where is the iPhone app EULA displayed for the user?
http://stackoverflow.com/questions/1960338/where-is-the-iphone-app-eula-displayed-for-the-user

posted by Png satoko on Fri 4 Nov 2011 at 17:46

お陰様を持ちまして、iPhone/iPad向けアプリ「ハンドミラー」のダウンロード数が25万ダウンロードに到達しました :)

AppViz 2
Uploaded with Skitch!

最初のバージョンは10分で作ったアプリでしたが、多くの方々に使っていただいているのは感慨深いですね。 ずっと無料なので収益は無いですが、ランキングとダウンロード数の動向を把握するのに役だってます。 最新バージョンでは1クリックでズームイン・ズームアウトする機能がついております。ぜひお試しください。

posted by Png genki on Fri 30 Sep 2011 at 04:14

Singletonを使う場面はよくあるんですが、iOS4以降はGrand Central Dispatchがあるのでそれのdispatch_onceを使う必要があるみたいで、メモ。

GCD 前:

   1  + (MyController*)singleton {
   2  	static MyController *controller = nil;
   3  
   4  	if(!controller) {
   5  		controller = [[MyController] alloc] init];
   6  	}
   7  	return controller;
   8  }

GCD 後:

   1  + (MyController*)singleton {
   2  	static dispatch_once_t pred = 0;
   3  	static MyController *controller = nil;
   4   
   5   	dispatch_once(&pred, ^{
   6    		controller = [[MyController alloc] init];
   7   	});
   8   	return controller;
   9  }

Cocoa Fundamentals GuideのClass Factory Methods項の下のほーーーうにあるCreating a Singleton Instanceの説明もとても参考になります。これは読むべし:

Cocoa Fundamentals Guide
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32

また、Apple Developer Forumsのこの質問もとても勉強になります:

Apple Developer Forums
https://devforums.apple.com/message/455002#455002

下記も参考

Singletons: You're doing them wrong
http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html

posted by Png satoko on Tue 28 Jun 2011 at 11:21

iOS5、発表されましたね。
個人的には、焦っても仕方ないので、ぼちぼち練りながらニッチな所をやっていこうと思います。

さて、ハーバード大学 講座 「CS 193P iPhone Application Development」、以前資料が公開されて話題になったのですが、2010-2011 Fallの資料も公開されていたのでメモ。

2010-2011 Fall
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-fall

基本的な講義とともに、気になったのは下記の回:

  • Title: Lecture 8: Gesture Recognizers
  • Title: Lecture 13: Blocks and Multithreading
  • Title: Bonus Lecture: Accessibility

特に、8と13はこれからの基本かなと思うのと、アクセシビリティは障害者の方だけでなく、みんなで使えば新しいシンプルなUIができるのかなと想像するところもあって勉強したくなりました。

以前に話題になった講座資料も挙げておきます:

2009-2010 Winter
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter

【追記 2011.6.8 14:31】
@splhack さんにお勧めいただいたコンテンツを追記させて下さい。
Madison Area Technical College、すごいですね…advancedとあるだけに内容が楽しみです… :)

iOS5、発表されましたね。
個人的には、焦っても仕方ないので、ぼちぼち練りながらニッチな所をやっていこうと思います。

さて、ハーバード大学 講座 「CS 193P iPhone Application Development」、以前資料が公開されて話題になったのですが、2010-2011 Fallの資料も公開されていたのでメモ。

2010-2011 Fall
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-fall

基本的な講義とともに、気になったのは下記の回:

  • Title: Lecture 8: Gesture Recognizers
  • Title: Lecture 13: Blocks and Multithreading
  • Title: Bonus Lecture: Accessibility

特に、8と13はこれからの基本かなと思うのと、アクセシビリティは障害者の方だけでなく、みんなで使えば新しいシンプルなUIができるのかなと想像するところもあって勉強したくなりました。

以前に話題になった講座資料も挙げておきます:

2009-2010 Winter
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter

【追記 2011.6.8 14:31】
@splhack さんにお勧めいただいたコンテンツを追記させて下さい。

@splhackさんのブログ:Grand Central Dispatchについての考察
http://tumblr.splhack.org/post/5662664642/grand-central-dispatch

Madison Area Technical College

posted by Png satoko on Wed 8 Jun 2011 at 14:11

Gestureメモ。扱われているRecognizerも挙げておく。

Touches

コード内には二つプロジェクトがあって、Touches_GestureRecognizersがGestureのサンプルコード。指でviewを拡大・回転する。もう一方はUIResponderのサンプル。

  • UIRotationGestureRecognizer
  • UIPinchGestureRecognizer
  • UIPanGestureRecognizer
  • UILongPressGestureRecognizer

http://developer.apple.com/library/ios/#samplecode/Touches/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007435

Table View Animations and Gestures

セルを指で広げるサンプルアプリ。

  • UIPinchGestureRecognizer

http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010139

SimpleGestureRecognizers

  • UITapGestureRecognizer
  • UISwipeGestureRecognizer

http://developer.apple.com/library/ios/#samplecode/SimpleGestureRecognizers/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009460

posted by Png satoko on Wed 1 Jun 2011 at 14:20

溶けたiPhone事件の後、新しいiPhoneにしてからエラーが出だしたのですが、これのお陰でバックアップが出来なくなってしまいました。
で、バックアップに失敗するので、iOSのアップデートにも失敗するという事になってしまい………ついに解決を目指す事に。

iOSのアップデート失敗時に下記を見るように指示されたので、Resolutionの項を一つ一つ試して行きます。

Update and restore alert messages on iPhone, iPad, and iPod touch
http://support.apple.com/kb/TS1275

でもだめです、解決しません。
アップデートをする際に、ステップの一部としてバックアップをするようになっているのですが、そこで失敗しているようです。

というわけで、まずはバックアップが成功するのを目指すことにしました。
ですが通常のバックアップも(ちゃんと)失敗して、下記のメッセージが表示されてしまいます…:

itunes_error_sync_services.png

iTunes was unable to load dataclass information from Sync Services. Reconnect or try again later.

メッセージ内容で検索してみたら下記が出てきました。 2008年7月の質問ですが、返信の中に「治ったー!」という報告がいくつかあったので試してみることに。

MacRumors Forums:"iTunes was unable to load dataclass information from Sync Services.... Jul 17, 2008, 03:42 AM
http://forums.macrumors.com/showthread.php?t=524354

回答として挙げられていたのは下記のリンク。

iTunes: How to remove and reinstall the Apple Mobile Device Service on Mac OS X
http://support.apple.com/kb/HT1747?viewlocale=en_US

下の方にある、OS XのApple Mobile Device Serviceを削除・再インストールする方法をやってみました。ざっくりと訳します。

OS XのApple Mobile Device Serviceを削除・再インストールする方法

  1. iPhone、iPad、iPodをMacと繋がっているケーブルから外す
  2. FinderでApplicationsフォルダ内にあるiTunes.appファイルをごみ箱に捨てる。iTunesアイコンも捨てる。
  3. FinderのメニューでGo > Go to Folderを選択、下記を開く:
    /System/Library/Extensions

  4. AppleMobileDevice.kextファイルをごみ箱に捨てる

  5. FinderのメニューでGo > Go to Folderを選択、下記を開く:
    /Library/Receipts/

  6. AppleMobileDeviceSupport.pkgファイルをごみ箱に捨てる。認証ダイアログが出てきたら、administratorパスワードを入力する。
    注意:Mac OS X v10.6以降の場合は、このファイルがないかもしれない。その場合は次のステップへ。

  7. Macを再起動する
  8. FinderメニューでFinder > Empty Trashを選択、Macを再起動する。
  9. iTunesの最新版をダウンロード、再インストール。
  10. Macにデバイスを接続して、iTunesを開く

さてこの作業後、iPhoneを接続してみたら…みごとバックアップも成功、iOSも更新できました!

posted by Png satoko on Wed 11 May 2011 at 05:58 with 1 comment

既存のiPhoneアプリをiPhone/iPad両対応の universal バイナリ化した場合、 iTunes Connect上でのstatusが"Missing Screenshot"になってしまうことがあるようです。

これはどうやら、全てのローカライゼーションに対してiPad用のscreenshotを少なくともひとつ設定すると解決する模様。 universal化した場合は、デフォルトの画像を自動的に全てのローカライゼーションに適用してくれないようなので、ローカライゼーションが多い場合は大変です。

posted by Png genki on Thu 30 Dec 2010 at 06:44
Contents
NSAssertやNSLogを無効にする:-DNS_BLOCK_ASSERTIONS=1とNS_BLOCK_ASSERTIONS
GDBでview.frameを表示させる
Core Animationについてのリンク集
[iPhone] new BSDライセンスについてライセンス引用のメモ
iPhone/iPad向けアプリ「ハンドミラー」25万ダウンロード
[iPhone] Singleton: iOS4以降はGCDのdispatch_onceを使う
ハーバード大学 iPhoneアプリケーション開発 2010-2011秋の講座資料が公開されてた
Apple公式 UIGestureRecognizersのサンプルコード
【解決】iPhoneのバックアップ エラー:iTunes was unable to load dataclass information from Sync Services. Reconnect or try again later.
iPhoneアプリをuniversalバイナリ化して"Missing Screenshot"になる場合の対処法
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
ブログに数式を埋め込める数式コミュニティ