Скрыть реализацию framework / stati c lib для отладки - PullRequest
0 голосов

Я создал свой собственный iOS фреймворк, думая, что он также скрывает свою частную реализацию для других разработчиков. После этого я добавил его в клиентское приложение и подумал, что все в порядке - я просто написал какую-то функцию, попытался Jump to Definition (^ + ⌘) в XCode, и это бросило меня в интерфейс.

Но потом я пошел дальше - я добавил точку останова на вызов функции и в режиме отладки попытался step into - в тот момент я прыгнул точно в функцию и увидел всю реализацию. После этого я попытался воспроизвести это с другими фреймворками, такими как Alamofire, и заметил то же самое поведение.

Также я попытался создать stati c library , с в этом примере . Я добавил некоторые частные функции, просто для эксперимента. Но поведение было таким же - я могу войти в функцию и увидеть все реализации.

Для эксперимента вы можете сделать либо framework , либо stati c library . Для ясности я взял код из этой статьи . После этого я просто импортировал его и написал функцию:

private func testLibOrFramework() {
    let service = AuthenticationService()
    let token = service.login("name", "pass")
    print(token)     
}

Эксперимент 1: Я пытался Jump to Definition. Я увидел то, что ожидал - интерфейс:

import Foundation
import SwiftOnoneSupport

public class AuthenticationService {

    public init()

    public func login(_ username: String, _ password: String) -> String
}

Эксперимент 2: Я добавил точку останова только при вызове функции lib / framework, запустил ее на симуляторе. Когда я добрался до этой строки кода, я нажал step into. Результат - я вижу все реализации:

public class AuthenticationService {

    public init() {
    }

    public func login(_ username: String, _ password: String) -> String {
        let somePrivateLet = getLoginUUID()
        return somePrivateLet
    }

    private func getLoginUUID() -> String {
        return UUID().uuidString
    }
}

Вопрос: есть ли способ скрыть частную реализацию для этого случая?

Если да: действительно ли это безопасно, или могут ли другие разработчики по-прежнему видеть код, если они хотят?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...