Just My Life & My Work

Archive for the ‘教學’ Category

關於 Swift 4.1

最近又「逼不得已」要更新Xcode 9.3(原9.2),原本沒有很想趕上潮流,不過因為老闆把自己的iPhone升級到11.3,我要幫他灌App測試,Xcode就跳出不支援該版本⋯⋯使得我被迫要升級Xcode!更沒想到的是,要安裝Xcode 9.3,還要先升級Mac OS 10.13(原10.12.6),這過程要花我整個下午的時間啊⋯⋯

本篇議題是關於 Swift 4.1,Xcode 9.3就能以Swift編程,以為只是小更新並不大礙,沒想到我所使用的Libray/Framework出現問題!!!

Swift第4版本提到Charts套件超好用,它要以Swift 4.0來編譯,所以要到某處選擇設定。今日更新到Swift 4.1

關於 Swift 4.1 Xcode2

想說編譯執行會很順利,誰知出現⋯⋯

關於 Swift 4.1 Xcode1

這不符合Swift版本問題很神奇啊~

error: The following binaries use incompatible versions of Swift:
/Users/happyboy/Library/Developer/Xcode/DerivedData/TestDeviceSDK-deuhrepxfcygzyguaogwmklmzddz/Build/Products/Debug-iphoneos/TestDeviceSDK.app/Frameworks/Charts.framework/Charts
/Users/happyboy/Library/Developer/Xcode/DerivedData/TestDeviceSDK-deuhrepxfcygzyguaogwmklmzddz/Build/Products/Debug-iphoneos/TestDeviceSDK.app/Frameworks/Zip.framework/Zip

目前還在找解法ORZ,依然有經驗地翻舊文章下載舊版Xcode,先成功編譯後推Git。

想問熟悉寫Swift的高人,到底有多少時間在改Swift語法和設定呀⋯⋯

參考:Swift和Objective-C混編的注意啦

廣告

[Xcode] 例外中斷點 (Exception Breakpoint)

Xcode中使用Breakpoint來debug是非常平常的事情,優秀的我們都能從Breakpoint來得知上下文狀態,如各個變數值。有時候崩潰(Crash)來得突然,Xcode沒有提供詳細的Crash訊息,像是我這個例子是:存取Empty Array

[Xcode] 例外中斷點 (Exception Breakpoint)2

此時例外中斷點 (Exception Breakpoint)就非常好用!

(繼續閱讀…)

[C/C++] 4 bytes轉成integer (Convert 4 Bytes to Integer)

最近要讀取藍牙裝置回傳的資料來解析,需要將4 bytes轉成integer,才能知道訊號強度相對值。太久沒搞底層東東,有些生疏,好在嘗試一下就得到正確結果!

bluetooth Central Peripheral

(繼續閱讀…)

[C/C++] 配置2D陣列 (Allocate 2D Array)

最近要整合C/C++高人寫的Source Code,發現我自己好像斷手斷腳XD,因為要搞較為底層的記憶體空間配置⋯⋯先前寫Objective C多麼愜意,用不到的記憶體空間,系統會自動去釋放,但是在C/C++就要自己寫code處理呢!

現在想要配置2D陣列 (Allocate 2D Array),要怎麼做才好辦事呢?

以後都來這兒複製貼上吧XD~

/**
 Theme: Allocate 2D Array
 IDE: Xcode 9
 Language: C
 Date: 107/03/30
 Author: HappyMan
 Blog: https://cg2010studio.com/
 */

#include 
#include 

float** createArray(int m, int n)
{
    float* values = calloc(m * n, sizeof(float));
    float** rows = malloc(n * sizeof(float*));
    for (int i = 0; i < n; ++i) {
        rows[i] = values + i*m;
    }
    return rows;
}

void destroyArray(float** arr)
{
    free(*arr);
    free(arr);
}

int main()
{
    float** happyArr = createArray(2,3);
    happyArr[0][0] = 1;
    happyArr[0][1] = 1;
    happyArr[1][0] = 2;
    happyArr[1][1] = 2;
    happyArr[2][0] = 3;
    happyArr[2][1] = 3;

    destroyArray(happyArr);
    return 0;
}

我發現顯示code的外掛會讓下面兩行出問題~

#include <stdio.h>
#include <stdlib.h>

最後記得釋放記憶體唷~

參考:How to return a 2D array to a function in C?

[C/C++] 如何引用C標頭檔

最近要研究1992年程式高人寫的原始碼,看到Xcode上黃色驚嘆號標示說是非常早期的語法,好在還能編譯運作,不然要以目前C語法再刻一次,我真的會想去撞牆啊XD~

話說,我學生時代習慣用C++寫程式,現在想以C++來引用C標頭檔,雖然在Xcode中可以將.c改成.cpp,就能成功「騙」過編譯器,但那樣根本是多此一舉,明明是C語言還要宣示為C++語言。

查詢後原來很簡單如何引用C標頭檔,使用extern保留字標記C,大括號中就是引用C標頭檔。

[C++] 如何引用C標頭檔.png

高人解釋:

For a list of C standard C headers (stdio, stdlib, assert, …), prepend a c and remove the .h. For example stdio.h becomes cstdio.

For other headers, use

extern “C"

{

  #include “happy_header.h"

}

參考:Including C headers inside a C++ program

[Xcode] C++ 讀取所在目錄檔案

過去六年以來一直寫iOS App,讀檔方面路徑沒什麼問題。

然而在Xcode寫C++ code時候,碰到讀取本目錄下txt文件的內容,不想使用絕對路徑,那麼就是使用相對路徑。可以做如下設置,就可以打開文件並讀取!

[Xcode] C++ 讀取所在目錄檔案

(繼續閱讀…)

[iOS] 使用 Core ML Model (Using Core ML Model)

研究所時代有旁聽機器學習課程,當時有親自操作SVM來產生model,可參考最近七年度以來一直很夯的文章:支持向量機器 (Support Vector Machine)。此時想要在iOS上使用SVM model要怎麼做呢?好在Apple釋出轉換model工具,再配合2017年釋出的Core ML,就能輕易在iOS上使用該model

Using Core ML Model.png

.

在此跳過轉換model的部分,直接進入套用已轉好的Core ML Models。不管你是阿貓還是阿狗做出來的model,都能透過Apple的轉換工具變身為飛天阿貓阿狗給App使用XD~

WWDC 2017 - Core ML Model2

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: