Как & ldquo; добавить существующие фреймворки & rdquo; в Xcode 4?

Вы можете сделать это с помощью интерфейсов Go. Функция, которая берет тип интерфейса, является общей в том смысле, что она не заботится о представлении данных базового конкретного типа. Он делает все через вызовы методов.

Чтобы создать общую версию вашего алгоритма, вы должны идентифицировать все возможности, которые требуется алгоритму для объектов данных, и вы должны определить методы, которые абстрагируют эти возможности , Подписи абстрактного метода становятся наборами методов интерфейсов.

Чтобы тип, совместимый с таким универсальным алгоритмом, вы определяете методы типа, чтобы удовлетворить интерфейс параметра алгоритма.

Я возьму ваш пример кода и покажу один способ сделать это. Большинство требуемых возможностей, вероятно, покрываются sort.Interface, поэтому я решил включить его. Требуется только одна возможность: копировать данные.

type algoContainer interface {
    sort.Interface
    Copy() algoContainer
}

Ниже приведена полная рабочая программа, сделанная из вашего примера кода.

package main

import (
    "fmt"
    "sort"
)

func main() {
    s1 := sortableString("abc")
    c1 := Algo(s1)
    fmt.Println(s1, <-c1)

    s2 := sortable3Ints([3]int{1,2,3})
    c2 := Algo(&s2)
    fmt.Println(s2, <-c2)
}

type algoContainer interface {
    sort.Interface
    Copy() algoContainer
}

type sortableString []byte
func (s sortableString) Len() int { return len(s) }
func (s sortableString) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s sortableString) Less(i, j int) bool { return s[i] < s[j] }
func (s sortableString) Copy() algoContainer {
   return append(sortableString{}, s...)
}
func (s sortableString) String() string { return string(s) }

type sortable3Ints [3]int
func (sortable3Ints) Len() int { return 3 }
func (s *sortable3Ints) Swap(i, j int) {
   (*s)[i], (*s)[j] = (*s)[j], (*s)[i]
}
func (s sortable3Ints) Less(i, j int) bool { return s[i] < s[j] }
func (s sortable3Ints) Copy() algoContainer { c := s; return &c }

func Algo(list algoContainer) chan algoContainer {
    n := list.Len()
    out := make(chan algoContainer)
    go func () {
        for i := 0; i < n; i++ {
            result := list.Copy()
            // actually useful:
            if result.Less(n-1, 0) {
                result.Swap(n-1, 0)
            }
            out <- result
        }
        close(out)
    }()
    return out
}
1414
задан Peter Mortensen 26 May 2011 в 20:25
поделиться

2 ответа

Согласно документации Apple:

  1. В навигаторе проекта выберите ваш проект.
  2. Выберите вашу цель.
  3. Выберите вкладку « Build Phases ».
  4. Откройте « Свяжите двоичные файлы с библиотеками » расширитель.
  5. Нажмите кнопку + .
  6. Выберите свою структуру.
  7. (необязательно) Перетащите добавленный framework в группу " Frameworks ".
1717
ответ дан 22 November 2019 в 20:19
поделиться

Я просто вручную добавил существующую папку фреймворка в навигатор проекта. Работал у меня.

40
ответ дан 22 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: