Hatena::ブログ(Diary)

satoru.netの自由帳 このページをアンテナに追加 RSSフィード

160111Monday

swift / appdeligateでページ越しで共通変数を使う

AppDelegate.swiftとは?

アプリをつくった段階でデフォルトでつくられるファイルのひとつ。

アプリ全体のライフタイムイベントを管理するためのクラス。

http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3

共通関数やら変数をページ越しで管理するときとかに使うとよさげ

appdeligate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var stampArray:[Stamp] = [];
    var isNewStampAdded = false

viewController.swift

        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        //配列stampArrayにstampを追加
        appDelegate.stampArray.append(stamp)
        //新規スタンプ追加フラグをtrueに設定
        appDelegate.isNewStampAdded = true

160110Sunday

swift / JSON取得&リスト表示&タイトルクリックでURLに飛ぶ

import UIKit
import Alamofire

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
    @IBOutlet var table: UITableView!
    var newsDataArray = NSArray();
    func tableView(tableView: UITableView, numberOfRowsInSection section:Int) -> Int{
        return newsDataArray.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)->UITableViewCell{
        let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
        let newsDic = newsDataArray[indexPath.row] as! NSDictionary
        cell.textLabel?.text = newsDic["title"] as? String
        cell.textLabel?.numberOfLines = 3
        cell.detailTextLabel?.text = newsDic["publishedDate"] as? String
        return cell
    }

    func tableView(tableView: UITableView,didSelectRowAtIndexPath indexPath: NSIndexPath){
        let newsDic = newsDataArray[indexPath.row] as! NSDictionary;
        let newsUrl = newsDic["unescapedUrl"] as! String;
        let url = NSURL(string:newsUrl);
        let app = UIApplication.sharedApplication();
        app.openURL(url!);
    }
    
    override func viewDidLoad() {
        table.dataSource = self;
        table.delegate = self;
        super.viewDidLoad()
        getRSS();
    }

    func getRSS(){
        let requestUrl = "https://ajax.googleapis.com/ajax/services/search/news?v=1.0&topic=p&hl=ja&rsz=8";
        Alamofire.request(.GET, requestUrl, parameters: nil).responseJSON {
            response in
            if let json = response.result.value {
                let jsonDic = json as! NSDictionary
                let responseData = jsonDic["responseData"] as! NSDictionary
                self.newsDataArray = responseData["results"] as! NSArray
                self.table.reloadData()
            }
        }
    }

140521Wedday

[] 遠隔関連メモ「隠していたPCで書いた」「自分の中に良い自分と悪い自分がいる」

このメールについて片山被告弁護団に対し、「メールは有罪判決が出た場合に備えて保釈前から内容を考えていた。隠していた小型のパソコンで文面を書いて、SDカードに保存して携帯電話に移して送信した。1か月ほど前から実際に作り始めていた」と話していることが分かりました。

また、「メールの送信には送信予約ができるアプリを使い当初は有罪判決が出て2日後くらいに送る計画だった。無罪だった場合は、キャンセル指令を出すつもりだった」と話しているということです。

片山被告の自宅マンションの駐輪場屋根裏から、メールの作成に使われた疑いがある小型のパソコンが押収されていて、警視庁で解析を進めています。

20日、再び収監された元会社員の片山祐輔被告が接見した弁護団に「自分の中に良い自分と悪い自分がいる」などと話していることがわかった。弁護団は片山被告精神鑑定の請求を検討している

140211Tueday

データ保持用クラス NSUserDefaults

keyを元に呼び出せる便利クラス

アプリが終了しても保持し続けるので、前回の設定を保持したい時などに使う。


- (void) hoge {
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

 //読み出し 
 if([[defaults stringForKey:@"key"] isEqualToString:@"off"]){
     ...
 }

 //保存
 setDefault(@"key",@"value");

}

- (void)setDefault :(NSString *)key :(NSString *)value{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:value forKey:key];
    [defaults synchronize];
}



資料

http://iphone-tora.sakura.ne.jp/nsuserdefaults.html

AVAudioPlayerの複数再生時のメモリリークの対策方法

AVAudioPlayerを複数立ち上げて音を二重で再生させると、

アプリ終了時、またはアプリ強制終了時にメモリリークする。

原因はよくわからんけど、それぞれのプレイヤーでcurrentTimeを0に設定したら落ちなくなった。

その他めも

  • [audio1 stop]しても駄目だった
  • [audio1 autorelease]はできなさげ
  • ofTypeを指定しない場合も同じくメモリリークが発生する

ソース

#include <AVFoundation/AVFoundation.h>

...

@interface ViewController(){
    AVAudioPlayer *audio1 ;
    AVAudioPlayer *audio2 ;
}
@end

...

- (void)viewDidLoad
{
    [super viewDidLoad];
	[self playSound1:@"sound1" ];
	[self playSound2:@"sound2" ];
}

...

- (void) playSound1 : (NSString *)file{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:file ofType:@"mp3"]];
    audio1 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    audio1.currentTime = 0;
    [audio1 play];
}

- (void) playSound2 : (NSString *)file{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:file ofType:@"mp3"]];
    audio2 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    audio2.currentTime = 0;
    [audio2 play];
}


130323Satday

[]環境省の中の人に「そらまめ君」の利用について問い合わせてみた

PM2.5の大気汚染情報まとめサイト http://taikiosen.jp

は公開から3日がたちそろそろ開発も落ち着いてきたので、、

本日、正式に環境省に「そらまめ君」の利用に関して申し出を行いました。

そこで担当者に電話にて簡単にサイトの趣旨説明を行ったところ、

「メールで内容を詳しく教えてほしい」とのお返事だったので、

下記のような内容でメールを送りましたので、内容を公開します。

送ったメールの内容

タイトル:【taikiosen.jp】そらまめ君のデータの利用につきまして :環境省水 大気環境局大気環境課 ご担当者様 先ほどご連絡をさせて頂きました、 taikiosen.jpの矢野さとると申します。 突然のご連絡にも関わらず、ご対応いただけました事を感謝いたします。 早速ですが、先ほどお電話にてお話させていただいた内容を 改めてメールにてご説明させて頂きます。 御省でご提供されている『そらまめ君』の公表データを参照させていただき、 『PM2.5の大気汚染情報まとめ』 URL: http://taikiosen.jp/ というサイトを公開させて頂いております。 このようなデータの利用に関しまして問題がないか等、 ご査収いただけますでしょうか。 もしも問題などありましたらすぐに対応を行いますので、 お忙しい中恐縮ですが、ご連絡を頂けましたら幸いです。 下記、サイトについてご説明させて頂きます。 ---------------------------------------- ◆takiosen.jpの主な機能 ◎サイト名 PM2.5の大気汚染情報まとめ ◎トップページ http://taikiosen.jp/ →PM2.5全国濃度マップ、汚染度ランキング等 →台湾、中国、韓国などのデータとも連動 ◎PM2.5予報情報 http://taikiosen.jp/sp/daily http://taikiosen.jp/sp/weekly →当日〜1週間のPM2.5予報情報 ◎分析された都道府県別の結果 福岡県: http://taikiosen.jp/p/40/ →各地点の情報のサマリーが分かります ◎地点詳細ページ: http://taikiosen.jp/r/37205010/ →地点の24時間、日毎、1週間の推移グラフなど ◎スマホ対応 PCだけでなくiPhone等のスマートフォンでも参照できます。 今後、アプリなども公開を予定しています。 ◎観測地点の検索機能 http://taikiosen.jp/search スマートフォン等の位置情報から最寄の観測地点を検索できます。 ---------------------------------------- ◆サイトの仕組みにつきまして 1時間毎にそらまめ君のデータ更新状況をチェック(1リクエスト@時)を行い、 更新が行われている場合のみ、ブロック単位での時報値表のページにアクセスを行います。 「北海道(BlockID:01)〜沖縄(BlockID:09)」 http://soramame.taiki.go.jp/DataHyou.php?BlockID=01&Time=2013032208http://soramame.taiki.go.jp/DataHyou.php?BlockID=09&Time=2013032208 上記ページ計9リクエストを行い、HTMLを解析し最新のデータを 当サイト内のデータベースに蓄積しています。 その後は、当サイト内のシステム内で全ての分析を行っておりますので、 サーバへの負荷の問題等はほとんどないかと思います。 現状はHTMLを解析しデータ化を行うなどの方法で取得を行っておりますが、 もしも他にデータを参照できる仕組みなどがありましたら、 既定の方法に従いますのでご指導いただければと思います。 ---------------------------------------- ◆運営者の情報につきまして 当サイトは個人(1人)で運営しています。 外部の団体や企業などの依頼を受けて運営・開発しているものではなく、 個人の意思で運営をおこなっているものです。 矢野さとる taikiosen.jp@satoru.net 電話:090-9076-6526 http://satoru.net/ ◎プロフィール satoru.net インターネット上で様々なサイトを作る活動を行っているものです。 http://satoru.net/ 主な活動内容など(Wikipedia) http://bit.ly/L56edv ---------------------------------------- ご説明は以上になります。ご回答お待ちしております。 どうぞよろしくお願いいたします。

©satoru.net
Mail Twitter